acceptDraft
ChatGPTAccepts an AI-generated content draft, promoting all draft items to real content. The draft must be in 'ready' status. The only post-accept action is 'publish', which puts every promoted item live immediately. Omit it to accept without publishing. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type of every item in draftId.
approveIdea
ChatGPTApprove an idea, which sets its status to 'approved'. Email sends and focused email edits enqueue durable materialization contracts; another content type generates a draft automatically when its type has draft enabled in aiEntityConfig. The idea must be in 'pending' status. Required Giant Context Permission: resourcemanager.projects.get, mind.ideas.update.
approvePlan
ChatGPTApproves a ready Mind plan and starts draft generation from the plan's canonical draft prompt. The plan must be in 'ready' status. Required Giant Context Permission: resourcemanager.projects.get, mind.plans.update.
approveSegment
ChatGPTThe human half of the two-gate design: Mind compiled the description into a tree, the console showed the tree and its live preview, and this records that a person looked and said yes. An uncompiled or error-state segment cannot be approved, and any later description edit clears the approval again. Required Giant Context Permission: people.segments.update.
archiveDraft
ChatGPTHides an accepted draft from the default list without deleting it. Archived drafts are preserved as a record of what was proposed and what was decided. Only accepted or partially_accepted drafts can be archived. Required Giant Context Permission: resourcemanager.projects.get, mind.drafts.update.
cancelDraft
ChatGPTCancels a draft whose status is still 'pending'. The background AI task will discard its results when it completes. Any materialized draft items are cleaned up. Required Giant Context Permission: resourcemanager.projects.get, mind.drafts.update.
createCrmCompany
ChatGPTCreates a new CRM company. Requires name. Optionally include website, industry, size, annual revenue, phone, email, address, custom properties, and tags. Required Giant Context Permission: crm.companies.create.
createDevelopersDoc
ChatGPTCreates a new developer doc in the specified app. name and slug are both required, and the slug is the URL segment: it must be unique within the app or the call fails with a 409. categoryIds files the doc under one or more categories and order sets its position within them; display order is assigned automatically when order is absent. status defaults to 'draft' while isListed defaults to true. A doc created as 'published' with content is also ingested into the AI developer docs for search and retrieval, so publishing is more than a visibility change. Required Giant Context Permission: developers.docs.create.
createDevelopersDocCategory
ChatGPTCreates a new developer docs category in the specified app. name and slug are both required, and the slug is the URL segment: it must be unique within the app or the call fails with a 409. parentId nests the category under another, order sets its position among siblings and is assigned automatically when absent, and icon and description are display only. Categories are used to organize articles within the developer docs. Required Giant Context Permission: developers.categories.create.
createDevelopersRedirect
ChatGPTAdds a manual URL redirect for this developers app: requests to fromPath 301 (or 308) to toPath. fromPath must be unique within the app. Required Giant Context Permission: developers.redirects.create.
createEmail
ChatGPTCreates a new email. Requires a name. Optionally set subject line, trigger description, content blocks, header, and footer references. Required Giant Context Permission: email.messages.create.
createEmailSend
ChatGPTCreates a send row, planned or queued — the only two states a send can start in. Mind writes status='planned' rows that it reorders as new CRM activity lands. When Mind commits to firing, it transitions to status='queued' with scheduled_for set; a worker picks it up. The worker alone records 'sent' or 'failed', after it has actually tried, so neither can be asked for here. Required Giant Context Permission: email.sends.create.
createFileFolder
ChatGPTCreates a new folder in the project file manager for organizing uploaded files. Folders can be nested by specifying a parentId. The folder name must be unique within its parent directory. Required Giant Context Permission: files.objects.update.
createForm
ChatGPTCreates an empty form in this Forms app from a name, an optional description and optional settings. A unique URL slug is generated from the name. The form has no fields yet and this call carries none: a form's fields are its structure rather than its description, so they are added afterwards. The created form is returned in full. Required Giant Context Permission: forms.definitions.create.
createKbArticle
ChatGPTCreates a new knowledge base article in the specified app. name and slug are both required, and the slug is the URL segment: it must be unique within the app or the call fails with a 409. Display order is assigned automatically, categoryIds files the article under one or more categories, and order sets its position within them. featuredImageUrl takes a file reference (file:{uuid}) rather than a resolved URL, which keeps the image tracked as in-use so it cannot be deleted out from under the article. layoutId, headerId and footerId bind the shell it renders inside, and omitting them inherits the app default. status defaults to 'draft' while isListed defaults to true. If the article is created with 'published' status and has content, it is automatically ingested into the AI knowledge base for search and retrieval. Required Giant Context Permission: kb.articles.create.
createKbCategory
ChatGPTCreates a new knowledge base category in the specified app. name and slug are both required, and the slug is the URL segment: it must be unique within the app or the call fails with a 409. parentId nests the category under another, order sets its position among siblings and is assigned automatically when absent, and icon and description are display only. Categories are used to organize articles within the knowledge base. Required Giant Context Permission: kb.categories.create.
createKbRedirect
ChatGPTAdds a manual URL redirect for this knowledge base app: requests to fromPath 301 (or 308) to toPath. fromPath must be unique within the app. Required Giant Context Permission: kb.redirects.create.
createPerson
ChatGPTCreates a person in the project. Requires firstName and lastName. An email becomes a linked identifier (asserted — typing an address proves nothing about owning it), and email uniqueness is per project. Optionally file under a CRM company via companyId. Required Giant Context Permission: people.records.create.
createProjectLegalDocument
ChatGPTCreates a new draft legal document for the project with auto-incremented version per (project, type). type is one of tos, privacy, aup, cookie or custom. Content is a record keyed by locale code, and every locale the project has enabled must hold non-empty content before the document can be published. A published legal document can never be edited or deleted, because the record of who accepted it points at that exact row. Required Giant Context Permission: legal.documents.update.
createSegment
ChatGPTThe description is the definition — the source of truth Mind compiles once (mind.segment.compile, a durable contract enqueued here) into a deterministic filter tree. The tree is then shown, previewed and explicitly approved before any consumer may read membership. Names are unique per project, case-insensitively, because segments are addressed by name in tenant prose. Required Giant Context Permission: people.segments.create.
createWebsiteDialog
ChatGPTCreates a new popup dialog for this website app. A dialog does not appear on its own: it opens from a button or link whose gcUrl is set to 'dialog:{dialogId}', using the id this call returns. maxWidth sizes it and includeClose adds a close control. Required Giant Context Permission: website.dialogs.create.
createWebsiteLayout
ChatGPTCreates a new page layout for this website app. A layout pairs a header with a footer (headerId, footerId) so pages and posts can share one shell, applied by setting layoutId on the page or post. Required Giant Context Permission: website.layouts.create.
createWebsitePage
ChatGPTCreates a new website page. name and slug are both required: name is the page title, and the slug is the URL segment, which must be unique within the app or the call fails with a 409. layoutId attaches a layout, which is how a page gets a header and footer. Content blocks, SEO metadata, and header, footer and sidebar references are optional. Required Giant Context Permission: website.pages.create.
createWebsitePost
ChatGPTCreates a new blog post. name and slug are both required: name is the title, and the slug is the URL segment, which must be unique within the app or the call fails with a 409. status defaults to draft. featuredImageUrl takes a file reference (file:{uuid}) rather than a resolved URL, which keeps the image tracked as in-use so it cannot be deleted out from under the post, and publishDate is what the blog orders by. layoutId, headerId and footerId bind the shell the post renders inside, and omitting them inherits the app default. Content blocks, excerpt, tags, author name, featured image, publish date and SEO metadata are all optional here. Required Giant Context Permission: website.posts.create.
createWebsiteRedirect
ChatGPTAdds a manual URL redirect for this website app: requests to fromPath 301 (or 308) to toPath. fromPath must be unique within the app. Required Giant Context Permission: website.redirects.create.
deleteBlock
ChatGPTRemoves a block from a content tree and records a version. Returns the removed block, plus columnRemoved or sectionRemoved when deleting the block emptied its container: an empty column is pruned (it renders a gap) and, when that empties the whole section, the section is pruned too (it paints an orphan background band). Non-destructive at the history level — the prior state is recoverable from version history. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
deleteDevelopersDoc
ChatGPTSoft-deletes a developer doc by moving it to the trash. Also removes the article from the AI developer docs. Returns 404 if the article does not exist or is already deleted. Required Giant Context Permission: developers.docs.delete.
deleteDevelopersDocCategory
ChatGPTSoft-deletes a developer docs category by moving it to the trash. Returns 404 if the category does not exist or is already deleted. Required Giant Context Permission: developers.categories.delete.
deleteDraft
ChatGPTPermanently deletes a draft. Only rejected, failed, or cancelled drafts can be deleted. Returns 409 if the draft is in any other status (pending, ready, accepted). Required Giant Context Permission: resourcemanager.projects.get, mind.drafts.delete.
deleteEmail
ChatGPTSoft-deletes an email by moving it to the project trash. Can be restored from trash later. Required Giant Context Permission: email.messages.delete.
deleteFile
ChatGPTSoft-deletes a file from the project file manager by moving it to the file trash. The file can be restored from trash before it is permanently deleted. Also removes the file from cloud storage if permanently deleted later. Required Giant Context Permission: files.objects.update.
deleteFileFolder
ChatGPTSoft-deletes a folder and all its contents (files and subfolders) by moving them to the file trash. The folder and its contents can be restored from trash before permanent deletion. Returns a count of deleted folders and files. Required Giant Context Permission: files.objects.update.
deleteForm
ChatGPTSoft-delete a form by moving it to the trash. The form and its data are not permanently destroyed and can potentially be restored. Requires app settings write permission. Returns a success indicator. Required Giant Context Permission: forms.definitions.delete.
deleteKbArticle
ChatGPTSoft-deletes a knowledge base article by moving it to the trash. Also removes the article from the AI knowledge base. Returns 404 if the article does not exist or is already deleted. Required Giant Context Permission: kb.articles.delete.
deleteKbCategory
ChatGPTSoft-deletes a knowledge base category by moving it to the trash. Returns 404 if the category does not exist or is already deleted. Required Giant Context Permission: kb.categories.delete.
deleteSection
ChatGPTRemoves a section (and its blocks) from a content tree and records a version. Returns the removed section. The prior state is recoverable from version history. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
deleteSegment
ChatGPTRemoves the saved definition and its compilation. Membership is computed, never stored, so deletion touches no person and leaves nothing behind. Required Giant Context Permission: people.segments.delete.
deleteWebsiteDialog
ChatGPTMoves a website dialog to the project trash. It stops being served at once and can be restored from the trash afterwards, so this is recoverable rather than permanent. Required Giant Context Permission: website.dialogs.delete.
deleteWebsiteLayout
ChatGPTMoves a website page layout to the project trash. It stops being served at once and can be restored from the trash afterwards, so this is recoverable rather than permanent. Required Giant Context Permission: website.layouts.delete.
deleteWebsitePage
ChatGPTSoft-deletes a website page by moving it to the project trash. Can be restored from trash later. Required Giant Context Permission: website.pages.delete.
deleteWebsitePost
ChatGPTSoft-deletes a blog post by moving it to the project trash. Can be restored from trash later. Required Giant Context Permission: website.posts.delete.
dismissIdea
ChatGPTDismiss an idea that the user doesn't want to pursue. The idea must be in 'pending' status. Optionally include a reason for dismissal. Dismissed ideas are tracked so Mind doesn't re-suggest them. Required Giant Context Permission: resourcemanager.projects.get, mind.ideas.update.
emptyFileTrash
ChatGPTPermanently deletes all items from the file trash, optionally filtering to only delete items older than a specified number of days. Removes files from cloud storage and recursively deletes folder contents, across the whole trash rather than one item — including entries someone else trashed and may have meant to restore. An age in days narrows it to entries older than that. Returns counts of deleted files and folders. Required Giant Context Permission: files.objects.update.
emptyProjectTrash
ChatGPTPermanently and irreversibly deletes every item in the project trash — every page, post, form, file and app anyone in the project has deleted, rather than one of them, including entries someone else trashed and may have meant to restore. For media/file items, also removes the associated files from cloud storage. This operation cannot be undone. Returns the count of permanently deleted items. Required Giant Context Permission: files.objects.update.
generateEditDraft
ChatGPTGenerates a reviewable edit draft for an existing resource. The AI analyzes the current content, determines what to keep/modify/add/remove, and stages the edited version as a copy — the live content only changes when the draft is accepted. Required Giant Context Permission: resourcemanager.projects.update.
generateFile
ChatGPTGenerates an image using the project's image model from a text prompt. Style, lighting and aesthetic come from the project's image design brief rather than from the prompt, which carries the subject and composition; the aspect ratio is derived from the prompt as well. The generated image is uploaded to storage and processed like a normal file upload. Required Giant Context Permission: files.objects.update.
generateNewDraft
ChatGPTGenerates new content as a reviewable draft from a natural language prompt. The draft is a proposal — nothing publishes until it is accepted. It is asynchronous: the response carries a draftId with status 'pending' while the AI builds layout, content, styles and vision QA in the background, which takes five to fifteen minutes. contentType accepts 'website_page' and defaults to it. Required Giant Context Permission: resourcemanager.projects.update.
getAppMember
ChatGPTRetrieves the full details of a specific app member by their membership ID. Returns the member's user profile information (name, email, avatar) along with their assigned role within the app and membership timestamps. Required Giant Context Permission: apps.instances.getIamPolicy.
getAppSettings
ChatGPTReturns the app's settings object together with the schema describing what that app accepts, so a caller can discover the shape without knowing the app type in advance. The shape comes from the app's own declaration, not from a list maintained here. Answers 404 with NO_APP_SETTINGS for an app type that has no settings, and names the ones that do. This is where a form's submission notifications address lives (the forms app's notifyEmail), where a chat escalation goes (the chat app's escalationEmail), and which layout new pages inherit (the website app's pageDesign). Required Giant Context Permission: apps.instances.list.
getBlock
ChatGPTReturns the JSON schema for a single block type plus its per-field authoring hints, scoped to (and validated against) the content type's palette. The styles object is identical for every block type and is not repeated here. Required Giant Context Permission: none beyond being authenticated.
getBlockStyles
ChatGPTReturns the one styles object every block, column and section accepts — margin, padding, width, background, border, box shadow, position, per-breakpoint visibility, entrance animation and cssId/cssClasses. It is identical for every block type and is not repeated on each one. The schema carries its own value-format guidance: which fields take per-breakpoint objects, when a bare number means a theme spacing multiple rather than pixels, and exactly which colour tokens resolve. A per-breakpoint { desktop, tablet, mobile } object sent to a flat field does not error and does not render. Required Giant Context Permission: none beyond being authenticated.
getChatConversation
ChatGPTRetrieve a chat conversation with cursor-based paginated messages. Without a cursor, returns the most recent messages (up to limit). direction=older with cursor/cursorId walks back through history. Required Giant Context Permission: chat.conversations.get.
getChatConversationTimeline
ChatGPTWhat the visitor in this conversation has done across the whole project — pages read, forms submitted, other conversations — newest first, so whoever answers the chat knows who they are talking to. If the visitor has been identified, their full history is included; if not, it is that browser's own activity. Required Giant Context Permission: people.edges.list.
getContactEmailTimeline
ChatGPTReturns the unified email timeline for a contact: past sends + planned sends (including staged sends from a Mind sends draft when present), each with per-send engagement stats (opens, clicks, bounced, complained). Each send carries its draftId (non-null only while staged in a ready draft). The response-level draftId points at the contact's active sends draft when one exists. Order is COALESCE(sent_at, scheduled_for, created_at) DESC so upcoming planned sends appear at the top, then recent sent, then older. Required Giant Context Permission: email.contacts.get.
getContent
ChatGPTReturns the full Section[] content tree (with every section/column/block id) for a content entity — pages, posts, landings, etc. Includes the id of every section, column and block. Required Giant Context Permission: resourcemanager.projects.get.
getContentPreview
ChatGPTRenders a page, post, landing or other addressable entity at a chosen device width and returns the whole page as an ordered set of base64 webp images (tiles), top to bottom — a long page cannot fit one legible image — plus the durable URL of the full-size capture. Addressed by content type and id. The render is live: it reflects the tree as it stands, including edits made through the block and section tools before they are published. A tile is a still of a live page: a marquee banner (logoBanner, iconBanner) is mid-scroll in the capture, so its end items are cut off at the edges by design and are not clipped, missing or broken. viewport defaults to desktop at 1440px, with mobile at 390px and tablet at 768px. Layout differs between them only where a section can reflow — multi-column sections, tables of three or more columns, the two-column nextPost, fixed node-per-row flows, fixed image ratios; text-only edits reflow identically at every width. Each render returns several images. Required Giant Context Permission: resourcemanager.projects.get.
getContentTypes
ChatGPTLists every content type — website pages, posts, landings, headers, footers, sidebars, dialogs and layouts; kb articles and landings; developer docs and landings; forms; emails and their headers and footers — with the builder context each belongs to and the exact block types allowed inside it. Required Giant Context Permission: none beyond being authenticated.
getContentVersion
ChatGPTReturns a single content version including its full Section[] content snapshot. Required Giant Context Permission: resourcemanager.projects.get.
getCrmActivity
ChatGPTReturns a single CRM activity by ID. Each activity is a natural-language description of something that happened, tagged with the app that wrote it, with optional JSON metadata and linked contact/company objects. Required Giant Context Permission: crm.activities.get.
getCrmCompany
ChatGPTReturns a single CRM company by ID, including name, website, industry, size, annual revenue, contact info, address, tags, custom properties, and a count of associated contacts. Required Giant Context Permission: crm.companies.get.
getDevelopersDoc
ChatGPTRetrieves a single developer doc by its ID, including its full rich text content, publish status, SEO metadata, and associated category IDs. Returns 404 if the article does not exist or has been soft-deleted. Required Giant Context Permission: developers.docs.get.
getDevelopersDocCategory
ChatGPTRetrieves a single developer docs category by its ID, including its name, slug, description, parent relationship, icon, and display order. Returns 404 if the category does not exist or has been soft-deleted. Required Giant Context Permission: developers.categories.get.
getDevelopersLanding
ChatGPTReturns the builder content for the developer portal landing page. There is exactly one per app and it is always seeded, so it can be edited but never created or deleted. Required Giant Context Permission: developers.landing.get.
getDevelopersRedirect
ChatGPTReturns a single URL redirect by ID, including its fromPath, toPath, status and source. Required Giant Context Permission: developers.redirects.get.
getDomainVerificationInstructions
ChatGPTRetrieves the DNS verification instructions for the specified custom domain. Returns the exact DNS record (type, name, and value) that must be added to the domain's DNS configuration at the domain registrar to prove ownership. This is required before the domain can be verified and used for serving content. The instructions include the CNAME or TXT record details needed for the verification process. Required Giant Context Permission: domains.mappings.list.
getDraft
ChatGPTRetrieves the full details of a single AI-generated content draft including the prompt, generated content, tool calls, and sources. status is 'pending' while the AI is still building, which takes five to fifteen minutes for a new page and less for a component edit, then 'ready', 'failed' or 'cancelled'. qualityScore (0-100) and qualityIssues are present when the vision QA ran. With lite=true the response carries status, qualityScore and errorMessage without the content tree, tool calls or sources. Required Giant Context Permission: resourcemanager.projects.get.
getDraftPreviewImage
ChatGPTReturns a single rendered preview image of a draft's content, base64-encoded webp. This is the draft content on its own, without the published page layout. It is available once the draft is 'ready' and carries a previewImageUrl. Required Giant Context Permission: resourcemanager.projects.get.
getEmail
ChatGPTReturns a single email by ID, including name, subject line, trigger description, full content blocks, header/footer references, and timestamps. Required Giant Context Permission: email.messages.get.
getEmailSend
ChatGPTReturns a single send row and its full event log (delivered/open/click/bounce/complaint/unsubscribe). Required Giant Context Permission: email.sends.get.
getFile
ChatGPTRetrieves the full details of a single file in the project file manager, including its filename, MIME type, size, dimensions, storage URL, alt text, caption, and folder assignment. Required Giant Context Permission: files.objects.list.
getFileFolder
ChatGPTRetrieves the details of a single folder in the project file manager, including its name, parent folder ID, and creation metadata. Required Giant Context Permission: files.objects.list.
getForm
ChatGPTRetrieve the full details of a single form by its identifier. Returns the form's unique identifier, associated app identifier, name, URL slug, description, field definitions (each with name, type, and required status), rich content layout (Builder block structure used for rendering), settings (redirect URL, tags, source, success message, submission limit), active/inactive status, and creation and update timestamps. The notification address is an app-level setting rather than a form field. Required Giant Context Permission: forms.definitions.get.
getFormBlockedSubmissions
ChatGPTReturns how many submissions this form refused in the last windowDays (default 30), grouped by reason, with the most recent occurrence of each. Reasons are 'honeypot' for a trap trip, which is the free always-on trap, and 'captcha:<verdict>' for a refusal by the paid widget. This is the evidence the captcha setting rests on: the product deliberately leaves the decision to a person looking at their own numbers rather than enabling a captcha at some invented spam threshold, so a form with no honeypot trips does not need one. A GET rather than a list — it returns counts, not rows, and the refused payloads are deliberately never stored. Required Giant Context Permission: forms.definitions.get.
getFormSubmission
ChatGPTRetrieve the full details of a single form submission by its identifier. Returns the submission's unique identifier, the parent form identifier, the complete user-submitted data (key-value pairs corresponding to form fields), metadata (user agent, IP address, referer, submission timestamp, tags, source), and the creation timestamp. Required Giant Context Permission: forms.definitions.get.
getHealthEcho
ChatGPTSends a prompt to the AI service, which calls the language model to generate a unique message. A successful response with a message confirms the full chain is working: API, then AI service, then the model. Each call returns a different message, proving the model is live. Required Giant Context Permission: none beyond being authenticated.
getIdea
ChatGPTReturns full details of a Mind idea including title, rationale, outline, priority, similarity score, and status. The rationale says why the content should exist and the outline is a structured brief for generating it; the similarity score measures how far the idea sits from existing content, where lower means a bigger gap. If the idea has status 'pending', it can be approved (triggering draft generation) or dismissed. Required Giant Context Permission: resourcemanager.projects.get.
getKbArticle
ChatGPTRetrieves a single knowledge base article by its ID, including its full rich text content, publish status, SEO metadata, and associated category IDs. Returns 404 if the article does not exist or has been soft-deleted. Required Giant Context Permission: kb.articles.get.
getKbCategory
ChatGPTRetrieves a single knowledge base category by its ID, including its name, slug, description, parent relationship, icon, and display order. Returns 404 if the category does not exist or has been soft-deleted. Required Giant Context Permission: kb.categories.get.
getKbLanding
ChatGPTReturns the builder content for the knowledge base landing page. There is exactly one per app and it is always seeded, so it can be edited but never created or deleted. Required Giant Context Permission: kb.landing.get.
getKbRedirect
ChatGPTReturns a single URL redirect by ID, including its fromPath, toPath, status and source. Required Giant Context Permission: kb.redirects.get.
getMe
ChatGPTReturns the authenticated user's profile: name, email, avatar, active status, notification preferences, suspension status, an isPlatformAdmin flag, and the organizations and projects they hold a membership on with their role in each. There is no account-wide role: access is held per organization, project and app, so read 'organizations[].memberRole' and 'projects[].role'. The 'permissions' array is the platform surface and is empty for every non-platform-admin by design, because a permission scoped to an organization, project or app cannot be expressed as a flat global list. Auto-provisions new users on first login. Required Giant Context Permission: none beyond being authenticated.
getOrganization
ChatGPTRetrieves a single organization by its unique ID. Returns the full organization object including name, slug, logo URL, status, member count, and timestamps. Returns 404 if the organization does not exist. Required Giant Context Permission: resourcemanager.organizations.get.
getOrganizationAnalyticsReport
ChatGPTReturns one analytics report covering every project in this organization, chosen with 'dimension'. Five cover the public websites: 'website-traffic' for views over time, 'website-pages' for the most-read pages, and 'website-countries', 'website-devices' and 'website-cities' for where and how people read them. The rest cover the organization's own use of the platform: 'activity' for events over time, 'events-by-category' and 'tokens-by-category' for what those events were and what they cost, 'operations' and 'top-operations' for which operations ran, and 'health' and 'avg-response-time' for how they went. Narrow the range with startDate and endDate and choose the bucket size with interval; reports that group by a column take 'field', which accepts 'projectSlug' here to split a total between the organization's projects. The whole report comes back in one response unless pageSize asks for a slice of it, and 'meta.total' is its size either way. A report is never silently shortened: if the response would exceed 256KB it is refused with the measurement and with the ways to shrink it — a narrower date range, a coarser interval, a smaller limit, or pageSize to take it a page at a time. Covers only this organization — no other organization's figures are reachable through it. Required Giant Context Permission: analytics.organizationReports.get.
getOrganizationBySlug
ChatGPTRetrieves a single organization by its URL-friendly slug (e.g. 'my-company'). Returns the full organization object including ID, name, slug, logo URL, status, member count, and timestamps. Resolves an organization from a URL or from user input that carries the slug but not the ID. Returns 404 if no organization matches the given slug. Required Giant Context Permission: resourcemanager.organizations.get.
getOrganizationMember
ChatGPTRetrieves a single organization member by their member ID. Returns the member object including user profile (name, email, avatar), role, title, and join date. The 'memberId' param is the member UUID. Returns 404 if the member does not exist in this organization. Required Giant Context Permission: resourcemanager.organizations.get.
getPerson
ChatGPTReturns a single person by ID. Fields include name, the email identifier's address and subscription state, phone, title, department, status, source, tags, and the CRM company when one is linked. Required Giant Context Permission: people.records.get.
getPersonByEmail
ChatGPTLooks the address up in the project's identifier table and returns the person it points at. 404 when the address is unknown or unlinked. The lookup is one identifier read — no app hunt, no search. Required Giant Context Permission: people.records.get.
getPersonPropertyKeys
ChatGPTThe census behind property hygiene: each key pinned on any person, how many people carry it, a few sample values, and the sources that wrote it. Keys drift — team_size, company_size, how_big_is_your_team — and this is the single read every hygiene surface works from: the console, the authoring-time hint, and the Mind pass that proposes merges. Required Giant Context Permission: people.records.list.
getPlan
ChatGPTReturns full details of a Mind plan, including stream selection, discovery, plan, design, audit, retry history, and draft prompt/spec artifacts. Required Giant Context Permission: resourcemanager.projects.get.
getProject
ChatGPTRetrieves the full details of a single project by its unique ID within the specified organization. Returns the project's name, slug, description, settings, and timestamps. The project must belong to the specified organization or a 404 error is returned. Required Giant Context Permission: resourcemanager.projects.get.
getProjectAnalyticsReport
ChatGPTReturns one analytics report for this project, chosen with 'dimension'. Five cover the public website: 'website-traffic' for views over time, 'website-pages' for the most-read pages, and 'website-countries', 'website-devices' and 'website-cities' for where and how people read it. The rest cover the project's own use of the platform: 'activity' for events over time, 'events-by-category' and 'tokens-by-category' for what those events were and what they cost, 'operations' and 'top-operations' for which operations ran, and 'health' and 'avg-response-time' for how they went. Narrow the range with startDate and endDate and choose the bucket size with interval; reports that group by a column take 'field' and default to the one the report is named for. The whole report comes back in one response unless pageSize asks for a slice of it, and 'meta.total' is its size either way. A report is never silently shortened: if the response would exceed 256KB it is refused with the measurement and with the ways to shrink it — a narrower date range, a coarser interval, a smaller limit, or pageSize to take it a page at a time. Covers only this project — no other organization's figures are reachable through it. Required Giant Context Permission: analytics.reports.get.
getProjectApp
ChatGPTRetrieves the full details of a single app by its unique ID within the specified project. Returns the app's name, slug, app type, configuration settings, and timestamps. The app must belong to the specified project or a 404 error is returned. Required Giant Context Permission: apps.instances.list.
getProjectAppBySlug
ChatGPTRetrieves the full details of a single app by its URL-friendly slug within the specified project. An alternative to looking up an app by ID when the slug is known but the ID is not. Returns the same complete app object as the get-by-ID endpoint including name, slug, app type, configuration, and timestamps. Required Giant Context Permission: apps.instances.list.
getProjectBranding
ChatGPTRetrieves the full details of a specific branding configuration by its unique ID within the specified project. Returns the branding's name and complete set of visual identity settings including primary and secondary colors, font selections, logo URLs, favicon, and any other configured styling properties. The branding must belong to the specified project. Required Giant Context Permission: branding.configs.get.
getProjectBySlug
ChatGPTRetrieves the full details of a single project by its URL-friendly slug within the specified organization. This is an alternative to looking up a project by its UUID when you have the human-readable slug from a URL or user input. Returns the same complete project object as the get-by-ID endpoint including name, slug, description, settings, and timestamps. Required Giant Context Permission: resourcemanager.projects.get.
getProjectLegalDocument
ChatGPTReturns a single legal document version for the project, including its localized content map and publish status. Required Giant Context Permission: legal.documents.list.
getProjectMember
ChatGPTRetrieves the full details of a single project member by their membership ID, including their user profile information, assigned role, and membership metadata. Required Giant Context Permission: resourcemanager.projects.getIamPolicy.
getProjectTrashItem
ChatGPTRetrieves the full details of a single item in the project trash by its trash record ID. Includes the original entity type, entity ID, name, deletion timestamp, and the stored entity data snapshot. Required Giant Context Permission: files.objects.list.
getSegment
ChatGPTThe full segment record including the compiled filter tree, which the console renders back to the author — showing the compilation is the design's safety: nothing is approved unseen, and nothing unapproved is consumed. The record carries the tenant's own description, the compiled tree, any compile error, and the two gates. Required Giant Context Permission: people.segments.list.
getSegmentPreview
ChatGPTDynamic evaluation of the compiled tree over live people, run at request time — membership is never stored. Total and deliverable diverge honestly: a segment is an audience selector, consent lives on the email identifier and is enforced again at send-claim time, so the preview shows both numbers rather than pretending they are one, alongside a sample of members. It evaluates a compiled segment whether or not that compilation has been approved, so the numbers an approver weighs are available while the segment is still unapproved. Required Giant Context Permission: people.segments.list.
getWebsiteBlogPage
ChatGPTReturns the app-level website blog archive page rendered at the site's blog root. There is exactly one per app and the first read seeds it, so it can be edited but never created or deleted. Required Giant Context Permission: website.blogPage.get.
getWebsiteConsentSettings
ChatGPTReturns the cookie consent and privacy settings configured for this website app, including banner text, consent categories, and GDPR/CCPA compliance options. Required Giant Context Permission: website.consent.get.
getWebsiteCustomDomain
ChatGPTReturns a single custom domain by ID, including hostname, verification status, SSL status, DNS records needed, and primary flag. Required Giant Context Permission: website.domains.get.
getWebsiteDialog
ChatGPTReturns a single website dialog by ID, including its name, type, trigger rules, content blocks, and display settings. Required Giant Context Permission: website.dialogs.get.
getWebsiteLanding
ChatGPTReturns the app-level website landing page rendered at the website root. There is exactly one per app and it is always seeded, so it can be edited but never created or deleted. Required Giant Context Permission: website.landing.get.
getWebsiteLayout
ChatGPTReturns a single website layout by ID, including its name, content blocks, layout structure, and timestamps. Required Giant Context Permission: website.layouts.get.
getWebsiteNotFoundPage
ChatGPTReturns the app-level website not found page, rendered on any unresolved path. There is exactly one per app and it is always seeded, so it can be edited but never created or deleted. Required Giant Context Permission: website.notFoundPage.get.
getWebsitePage
ChatGPTReturns a single website page by ID, including title, slug, full content blocks, SEO metadata, publish status, and layout references (header, footer, sidebar). Required Giant Context Permission: website.pages.get.
getWebsitePost
ChatGPTReturns a single blog post by ID, including title, slug, full content blocks, excerpt, tags, author, featured image, SEO metadata, and publish status. Required Giant Context Permission: website.posts.get.
getWebsiteRedirect
ChatGPTReturns a single URL redirect by ID, including its fromPath, toPath, status and source. Required Giant Context Permission: website.redirects.get.
getWebsiteSignInPage
ChatGPTReturns the app-level website sign-in page, served at the site's fixed sign-in path. There is exactly one per app and it is always seeded, so it can be edited but never created or deleted. What makes it a sign-in page is a block scoped to this content type rather than a special rendering path, so it is authored like any other page. It has no slug, because its address is fixed, and no visibility flag, because a sign-in page that is not public is a locked door with the key inside. Required Giant Context Permission: website.signInPage.get.
getWebsiteTrackingSettings
ChatGPTReturns the tracking configuration for this website app, including its tag manager container ID. Required Giant Context Permission: website.tracking.get.
getWebsiteViewerApple
ChatGPTReads the site's viewer tenant in Identity Platform rather than our own settings, so a provider removed out of band shows as absent instead of as offered. Also answers whether the platform has an Apple configuration to offer at all, which is the difference between a site that has said no and a site that cannot say yes. Required Giant Context Permission: website.viewerAuth.get.
getWebsiteViewerAuth
ChatGPTReturns whether viewer sign-in is enabled for this website app and the identity tenant holding its viewers. The tenant id is not a secret — it is compared against a session's claim, never used to mint one. Required Giant Context Permission: website.viewerAuth.get.
insertBlock
ChatGPTInserts a new block into a content entity's tree and records a version. The block's data is validated against its type's schema and the content's block palette. Returns the created block (with its generated id). Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
insertSection
ChatGPTInserts a new section (validated against the section schema, including any blocks it carries) and records a version. Every field on the supplied section is kept; only id and type are server-owned. Ids are generated for the section and for any columns/blocks that omit one. Omit an anchor to append at the end. A section given no columns is created with one empty column. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
inviteWebsiteViewer
ChatGPTCreates an account in the site's identity tenant and emails a sign-in link. No password is set; the link signs them in once, and the identity provider owns its expiry. Inviting somebody who already has an account sends a fresh link rather than failing, which is how an expired invitation is repaired. Invited people can read every gated page on this site and nothing else — there are no viewer roles, and they are not Giant Context users and hold no permissions. The link lives on the order of an hour. The address becomes a person at once and the response carries its personId, so an invited reader is a contact before their first sign-in rather than after it. Refuses with VIEWER_AUTH_DISABLED when the site has no viewer sign-in, and with VIEWER_ERASED when that address has asked to be forgotten. Required Giant Context Permission: website.viewerAuth.update.
listAppMembers
ChatGPTReturns a paginated list of all members who have been explicitly assigned roles at the app level. Each member entry includes the user's profile information (name, email, avatar) and their assigned role within the app. This is separate from organization-level or project-level membership; only users with direct app-level role assignments are returned. Required Giant Context Permission: apps.instances.getIamPolicy.
listAvailableTools
ChatGPTReturns every tool-enabled operation with both a one-line summary and its full description. tags_has limits the result to one area, search matches name, summary and description, source limits it to what a given surface exposes, and route limits it to what applies on a console page. The response is paginated and carries a total. Required Giant Context Permission: none beyond being authenticated.
listBuilderBlocks
ChatGPTReturns the complete SectionSchema as JSON Schema, describing every available builder block type and its configuration options. The schema defines the structure for all section blocks that can be used when composing pages, including their properties, required fields, and validation rules. Accepts a block-type filter. Required Giant Context Permission: none beyond being authenticated.
listChatConversations
ChatGPTList all chat conversations for a given chat app. Returns a paginated list of conversations with their IDs, titles, visitor IDs, and timestamps. Supports search filtering by conversation title or visitor ID. Results are ordered by most recently updated first. This is an admin-only endpoint used to review and manage all customer chat conversations. Required Giant Context Permission: chat.conversations.list.
listChatEscalations
ChatGPTList all escalations for a chat app — the escalations inbox. Returns a paginated list with each escalation's status, visitor contact details, summary, originating URL, linked conversation, and timestamps. status is one of collecting_contact, collecting_summary, submitted or cancelled, and filtering it separates open handoffs from submitted or cancelled ones; visitorEmail filters to one person and search matches visitor email or summary. Results are ordered by most recently created first. Admin-only. Required Giant Context Permission: chat.conversations.list.
listContentVersions
ChatGPTReturns the newest-first version history for a single content entity (page, post, landing, etc). Metadata only ; content snapshots are not included. This is the undo/rollback trail for both human and AI edits. Required Giant Context Permission: resourcemanager.projects.get.
listCrmActivities
ChatGPTReturns a paginated timeline of CRM activities for the specified app, newest first. Each activity is a natural-language description of something that happened for a contact (or company), tagged with the app that wrote it and optionally enriched with a JSON data payload. Supports free-text search across the description. Required Giant Context Permission: crm.activities.list.
listCrmCompanies
ChatGPTReturns a paginated list of all CRM companies for the specified app. Supports search by company name or industry. Each company includes a count of associated contacts. Required Giant Context Permission: crm.companies.list.
listCrmCompanyActivities
ChatGPTReturns the natural-language activity timeline for a company, newest first. Each row is a description of something that happened, tagged with the app that wrote it, with optional JSON metadata. Required Giant Context Permission: crm.companies.list.
listCrmCompanyContacts
ChatGPTReturns a paginated list of CRM contacts linked to a specific company, ordered by last name then first name. Each contact includes name, email, phone, title, department, status, source, tags, and linked company object. Required Giant Context Permission: crm.companies.list.
listCrmCompanyTimeline
ChatGPTThe activity of everyone at a company, merged into one list, newest first. Because this is the people's own activity viewed through their employer, it needs permission to read people across the project as well as access to the company — access to the CRM app alone is not enough and the call is refused. Required Giant Context Permission: people.edges.list.
listDeletedProjectApps
ChatGPTReturns a list of all soft-deleted (trashed) apps within the specified project. These are apps that have been deleted but not yet permanently removed. Each app includes its full details including name, slug, app type, and deletion timestamp. Trashed apps can be restored using the restore endpoint or permanently deleted using the permanent delete endpoint. Required Giant Context Permission: apps.instances.list.
listDevelopersApiGroups
ChatGPTLists synced OpenAPI groups for a developer portal, including localized descriptions, endpoint counts, and user-selected icons. A group is a tag-level bucket derived from the synced OpenAPI spec rather than authored by hand. Groups are returned in portal order (orderIndex, then name) unless a sort is requested. Required Giant Context Permission: developers.groups.list.
listDevelopersDocCategories
ChatGPTLists all developer docs categories for the specified app, returned as a hierarchical tree structure. Categories are nested under their parent categories by parentId and sorted by their display order; a root category has a null parentId and each one carries its children inline. Includes all active (non-deleted) categories. Required Giant Context Permission: developers.categories.list.
listDevelopersDocs
ChatGPTLists all developer docs for the specified app, with support for pagination, filtering by category, filtering by publish status, and full-text search across names and slugs. Returns docs sorted by creation date (newest first) by default. Required Giant Context Permission: developers.docs.list.
listDevelopersRedirects
ChatGPTReturns a paginated list of the URL redirects for this developers app. Each maps an old path (fromPath) to the current path (toPath) with a status (301 or 308) and a source: auto (recorded when a slug changed) or manual (added by hand). Required Giant Context Permission: developers.redirects.list.
listDrafts
ChatGPTReturns a paginated list of AI-generated content drafts for the specified project. By default archived drafts are hidden — pass includeArchived=true to include them. Required Giant Context Permission: resourcemanager.projects.get.
listEmailSends
ChatGPTReturns the log of sends (past + planned + queued) for this email app. Filter by email, contact, or status. Sorted by effective time (sent_at, then scheduled_for, then created_at) descending. Required Giant Context Permission: email.sends.list.
listEmails
ChatGPTReturns a list of all emails for the specified app. Each email includes its name, subject line, trigger description, content blocks, and associated header/footer references. The trigger description is natural language, and it is what Mind reads to decide what to send to which contact and when. Required Giant Context Permission: email.messages.list.
listFileFolders
ChatGPTReturns all folders in the project file manager. Filter by parentId to list only the children of one folder, or parentId_isnull=true for the project root. Omit both to list every folder in the project. Folders are used to organize uploaded files (images, documents, media). Required Giant Context Permission: files.objects.list.
listFileReferences
ChatGPTReturns a comprehensive list of all entities that reference this file across the project. This includes pages, headers, footers, blog posts, templates, sidebars, dialogs, forms, and branding settings. Answers what changes if the file is deleted or replaced. Required Giant Context Permission: files.objects.list.
listFileTrash
ChatGPTReturns all soft-deleted files and folders currently in the project's file trash. Items remain in trash until they are restored or permanently deleted. Each item includes its original metadata and the date it was trashed, newest first. Required Giant Context Permission: files.objects.update.
listFiles
ChatGPTReturns a paginated list of files (images, documents, media) uploaded to the project file manager. Search matches filename, original filename, title and description. Filter with folderId (folderId_isnull=true for the project root), mimeType (mimeType_like=image/ for every image), isPublic and grounding. Required Giant Context Permission: files.objects.list.
listFormSubmissions
ChatGPTRetrieve a paginated list of all submissions received for a specific form. Each submission includes its unique identifier, the parent form identifier, the user-submitted data (key-value pairs corresponding to form fields), metadata (user agent, IP address, referer, submission timestamp, tags, source), and the creation timestamp. search matches case-insensitively against the serialized submission data, so it finds a submission by a value inside it. Sorting is available on createdAt only, newest first by default. Required Giant Context Permission: forms.definitions.list.
listForms
ChatGPTRetrieve a paginated list of all forms belonging to the specified Forms app. Each form in the response includes its unique identifier, name, URL slug, description, field definitions (name, type, required status), rich content layout, settings (redirect URL, tags, source), active/inactive status, creation and update timestamps, and a count of how many submissions have been received. search matches name or slug case-insensitively, and the filter keys are slug, isActive, createdAt and updatedAt. Sorting is available over name, slug, isActive, createdAt and updatedAt, newest first by default; submissionCount cannot be sorted on, because it is counted by a join the pager does not carry. Required Giant Context Permission: forms.definitions.list.
listIdeas
ChatGPTReturns a paginated list of Mind ideas for the project. Ideas represent content gaps or suggestions identified by the AI ideation engine, from gap detection across the project's apps — website, KB, email and forms — and each carries a name, rationale, priority and target content type. Filter by status to see pending, approved, dismissed, or drafted ideas. Required Giant Context Permission: resourcemanager.projects.get.
listKbArticles
ChatGPTLists all knowledge base articles for the specified app, with support for pagination, filtering by category, filtering by publish status, and full-text search across names and slugs. Returns articles sorted by creation date (newest first) by default. Required Giant Context Permission: kb.articles.list.
listKbCategories
ChatGPTLists all knowledge base categories for the specified app, returned as a hierarchical tree structure. Categories are nested under their parent categories by parentId and sorted by their display order; a root category has a null parentId and each one carries its children inline. Includes all active (non-deleted) categories. Required Giant Context Permission: kb.categories.list.
listKbRedirects
ChatGPTReturns a paginated list of the URL redirects for this knowledge base app. Each maps an old path (fromPath) to the current path (toPath) with a status (301 or 308) and a source: auto (recorded when a slug changed) or manual (added by hand). Required Giant Context Permission: kb.redirects.list.
listMemberAppMemberships
ChatGPTReturns every app across the organization's projects along with the specified member's role on each, or null where they have no binding. Since a project role no longer grants access inside an app, this is what shows which apps a member can actually work in. Each entry carries its project so the apps can be grouped under the project they belong to. Required Giant Context Permission: resourcemanager.organizations.get.
listMemberProjectMemberships
ChatGPTReturns a list of all projects in the organization along with the specified member's access level for each project. Each entry includes the project ID, name, and the member's role/permission level within that project (or null if they have no direct project membership). Answers what a member can reach across the organization. Required Giant Context Permission: resourcemanager.organizations.get.
listMyActivities
ChatGPTReturns a paginated list of activities performed by or affecting the current user. Each activity includes the action taken, the resource type and ID involved, the actor, and a timestamp. Filter by action or resourceType, sort with sort=field:direction, and page with page and pageSize. Required Giant Context Permission: none beyond being authenticated.
listMyApiKeys
ChatGPTReturns all active API keys belonging to the current user. Each key includes its ID, name, creation date, expiration date, and associated organization. The secret key value is not returned for security. Required Giant Context Permission: none beyond being authenticated.
listMyBugReports
ChatGPTReturns a paginated list of bug reports submitted by the current user, filterable by status, severity and source and searchable by title or description. Each report includes its title, description, steps to reproduce, expected/actual behavior, severity, status (open/resolved/cancelled), browser info, page URL, report count, and linked GitHub issue details if any. Required Giant Context Permission: none beyond being authenticated.
listMyFeatureRequests
ChatGPTReturns all feature requests submitted by the current user (up to 100). Each request includes its title, description, priority, status (open/planned/shipped/cancelled), vote count, and linked GitHub issue details if any. Required Giant Context Permission: none beyond being authenticated.
listMyInvitations
ChatGPTReturns a paginated list of pending organization invitations addressed to the current user's email. Each invitation includes the organization name, the role offered, who sent it, and when it was created. Supports standard pagination query parameters. Required Giant Context Permission: none beyond being authenticated.
listMyNotifications
ChatGPTReturns a paginated list of notifications for the authenticated user. Filters are read status, type, subject — what a notification is about, such as ai-content, billing, or platform for operator notices — and scope, as a scopeKind with its scopeId. Each notification includes its type, title, message, read status, and associated resource reference. Required Giant Context Permission: none beyond being authenticated.
listMyOrganizations
ChatGPTReturns all organizations that the authenticated user is a member of. Each organization includes its ID, name, slug, logo URL, and the user's role within that organization (owner, admin, editor or viewer). Required Giant Context Permission: none beyond being authenticated.
listMySuspensionMessages
ChatGPTReturns the full suspension appeal message thread for the current user. Each message includes the sender (user or admin), the message content, and a timestamp. Only available to users with an active or past suspension. Required Giant Context Permission: none beyond being authenticated.
listOrganizationApiKeys
ChatGPTReturns all active API keys for an organization. Each key object includes its ID, name, creation date, expiration date, and the user it is associated with. The secret key value is never returned in list responses. Requires admin or owner role within the organization. Required Giant Context Permission: resourcemanager.organizations.update.
listOrganizationInvitations
ChatGPTReturns a paginated list of pending, accepted, and expired invitations for an organization. Each invitation includes the invitee email, assigned role, status, creation date, and expiration. Supports search by email, filtering by status, and sorting. Requires owner or admin role within the organization. Required Giant Context Permission: resourcemanager.organizations.getIamPolicy.
listOrganizationMembers
ChatGPTReturns a paginated list of all members in an organization. Each member object includes the member ID, user profile (name, email, avatar), role (owner, admin, editor, viewer), title, and join date. Supports search by name or email, filtering by role, and sorting. Pagination is controlled via page and pageSize query parameters. Required Giant Context Permission: resourcemanager.organizations.get.
listPeople
ChatGPTReturns a paginated list of the project's people — everyone the project knows, whether or not a CRM app is installed. search matches on name. Each person carries their email identifier's address and subscription state, and the CRM company overlay when one exists. Required Giant Context Permission: people.records.list.
listPersonTimeline
ChatGPTEverything one person has done across the whole project, newest first: pages read, forms submitted, chats held, emails received. Their anonymous browsing is included — activity recorded before the person was identified is joined to them once they are, so the history does not start at the moment they gave their name. Each entry carries a plain-language description of what happened and, where there is something to count, the numbers behind it. Erasing a person empties this view without deleting the underlying activity. Erasing the person empties this list without deleting any of the stored activity behind it. Required Giant Context Permission: people.edges.list.
listPlans
ChatGPTReturns a paginated list of Mind plans for the project. Plans are the prepared bridge between ideas and generated drafts: each one says how an idea was prepared for generation, and carries its status, stream, planning and audit artifacts and the final draft prompt and spec. Required Giant Context Permission: resourcemanager.projects.get.
listPopularFeatureRequests
ChatGPTReturns all non-merged, non-cancelled feature requests sorted by vote count. Includes whether the current user has voted for each request and the comment count. Does not expose user identity information for privacy. Required Giant Context Permission: none beyond being authenticated.
listProjectApps
ChatGPTReturns a paginated list of all active (non-deleted) apps configured within the specified project. Apps represent individual applications such as websites, email, forms, knowledge bases, chat widgets, CRM instances, developer docs, or socials. Each app includes its unique ID, name, slug, app type, configuration, and timestamps; the app ID is what every app-level operation is addressed by. Trashed apps are not in this list. Supports pagination and search filtering. Required Giant Context Permission: apps.instances.list.
listProjectBrandings
ChatGPTReturns a paginated list of all branding configurations for the specified project. Projects can have multiple named branding profiles (e.g., 'Website Brand', 'LMS Brand'), each containing visual identity settings such as primary and secondary colors, font selections, logo URLs, and favicon. Each branding entry includes its unique ID, name, and the full set of configured styling properties. Required Giant Context Permission: branding.configs.get.
listProjectDomains
ChatGPTReturns a comprehensive list of all domains (both auto-generated and custom) across all apps within the specified project. Each domain entry includes its hostname, its verification status, one of pending_dns, verifying_dns, provisioning_cert, provisioning_map, active or failed, whether it is generated or custom, whether it is the primary domain for its app, and the associated app name and slug. Domains are grouped by app and sorted with generated domains first and primary domains prioritized. Required Giant Context Permission: domains.mappings.list.
listProjectLegalDocuments
ChatGPTReturns a paginated list of legal document versions for the project, including drafts and published versions across all document types (terms of service, privacy policy, acceptable use policy, cookie policy, custom). Required Giant Context Permission: legal.documents.list.
listProjectMembers
ChatGPTReturns a paginated list of users who are members of the specified project, including their roles and profile information. Supports search by name, filtering, and sorting. Project members have access to project resources based on their assigned role. Required Giant Context Permission: resourcemanager.projects.getIamPolicy.
listProjectTrash
ChatGPTReturns a paginated list of all soft-deleted resources across the entire project, including pages, posts, files, forms, and other entities. Supports filtering by entity type to narrow results. Each trash item includes the original entity metadata, deletion timestamp, and the user who deleted it. This is the unified project-level trash, which is a separate place from the file trash. Required Giant Context Permission: files.objects.list.
listProjectUrls
ChatGPTReturns resolved relative URLs for all published content across all apps in the project. Includes pages, posts, articles, etc. with name, path, type, and SEO metadata. Filter by app or type, search by name or path, and sort by any of them. Used for link resolution in AI builders, menus, emails, and navigation. Required Giant Context Permission: resourcemanager.projects.get.
listProjects
ChatGPTReturns a paginated list of all projects belonging to the specified organization. Projects are the top-level containers that hold apps, brandings, and domains. Supports search filtering by project name and pagination via page and pageSize query parameters. Each project in the response includes its unique ID, name, slug, description, and timestamps. Required Giant Context Permission: resourcemanager.projects.list.
listSegments
ChatGPTSegments are audiences defined in the tenant's own words and compiled by Mind into a deterministic filter tree (natural-language-segments). Membership is never stored: every read evaluates the compiled tree over live people, so an erased person vanishes from every segment instantly. Each row shows both gates — compiledAt (Mind produced a valid tree) and approvedAt (a human approved the shown compilation) — and no consumer may read membership until both are set. Required Giant Context Permission: people.segments.list.
listWebsiteCustomDomains
ChatGPTReturns a list of all custom domains configured for this website app, including verification status, SSL status, and whether each is the primary domain. The primary domain comes first unless a sort is requested, over domain, isPrimary, isVerified, isGenerated, createdAt or updatedAt. Required Giant Context Permission: website.domains.list.
listWebsiteDialogs
ChatGPTReturns a list of all popup dialogs configured for this website app. Dialogs are used for modals, popups, banners, and slide-ins. Required Giant Context Permission: website.dialogs.list.
listWebsiteLayouts
ChatGPTReturns a list of all page layouts for this website app. Layouts provide reusable page layouts and content block structures. Required Giant Context Permission: website.layouts.list.
listWebsitePages
ChatGPTReturns a list of all pages for this website app. Each page includes its title, slug, publish status, SEO metadata, and associated header/footer/sidebar references. Required Giant Context Permission: website.pages.list.
listWebsitePosts
ChatGPTReturns a paginated list of all blog posts for this website app. Each post includes title, slug, excerpt, publish status, author, tags, and featured image. Required Giant Context Permission: website.posts.list.
listWebsiteRedirects
ChatGPTReturns a paginated list of the URL redirects for this website app. Each maps an old path (fromPath) to the current path (toPath) with a status (301 or 308) and a source: auto (recorded when a slug changed) or manual (added by hand). Required Giant Context Permission: website.redirects.list.
listWebsiteTags
ChatGPTReturns a list of all tags used across pages and posts in this website app. Tags are used for categorization and filtering. Required Giant Context Permission: website.tags.list.
listWebsiteViewers
ChatGPTReturns the site's members — the viewers who can read pages and posts marked as requiring sign-in. Each row is a person: personId points at the same record the CRM, segments and activity use, so a reader can be a contact rather than an account stranded in the identity provider. hasSignedIn is false for somebody who has been invited but has not followed the link yet, and signedInAt is null for exactly those, so filtering it separates outstanding invitations from arrived members. lastActivityAt is the person's last activity anywhere in the project rather than their last visit to this site. A site with viewer sign-in switched off returns an empty list rather than an error. A viewer exists for this one site: they hold no console access and no permissions, and cannot be an organization or project member. Required Giant Context Permission: website.viewerAuth.get.
logCrmActivity
ChatGPTAppends an activity to the CRM timeline. description is a natural-language sentence ('Viewed pricing page', 'Unsubscribed from newsletter'). writtenBy identifies which app wrote it. Optional data carries structured metadata. Link to a contact and/or company via id. Required Giant Context Permission: crm.activities.create.
mergePersonPropertyKeys
ChatGPTRewrites fromKey to toKey on every person carrying it. When a person carries both, the newer envelope wins — the same last-write-wins rule every property write follows — and a moved envelope records mergedFrom, so the rename stays on the record. This is the deterministic executor an approved merge proposal runs through: Mind judges sameness, core moves the data. Required Giant Context Permission: people.records.update.
moveBlock
ChatGPTRelocates a block to a new anchor (next to a sibling, or into a section) and records a version. Returns the moved block. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
moveSection
ChatGPTReorders a section to a new position (relative to a sibling, or appended) and records a version. Returns the moved section. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
openFile
ChatGPTReturns the actual content of a file inline — text as a string, images as base64. Text files (Markdown, CSV, JSON, YAML, plain text, HTML, CSS, JS, XML, SVG) are returned in the 'content' field. Image files (PNG, JPG, GIF, WebP) are returned as base64 in the 'base64Content' field. Files over 10 MB or unsupported types return 404. Required Giant Context Permission: files.objects.list.
permanentDeleteFileTrashItem
ChatGPTPermanently and irreversibly deletes a file or folder from the file trash. For files, also removes the file from cloud storage. For folders, recursively deletes all contained files and subfolders. Requires specifying the item type (file or folder) in the request body. Nothing brings it back, and anything still pointing at the file — a page's featured image, a block's media — is left referencing something that no longer exists. Required Giant Context Permission: files.objects.update.
permanentDeleteProjectTrashItem
ChatGPTPermanently and irreversibly removes an item from the project trash. For media/file items, also deletes the associated file from cloud storage. This operation cannot be undone. The item will no longer be recoverable after this action. Required Giant Context Permission: files.objects.update.
publishContent
ChatGPTSets a content item's status to published and leaves everything else untouched: not its content, slug, layout or metadata. Works for every content type that has a draft/published lifecycle — website pages and posts, KB articles, developer docs and emails. Structural pieces (headers, footers, layouts, landings, forms) are always live and are refused by name. Publishing re-indexes the item for AI search, signals the search engines, and purges the public cache. Re-publishing something already published is not an error; the response says alreadyInState. A publishAt with a future timestamp schedules instead of publishing: the item stays a draft until a job takes it live, and the response returns scheduledPublishAt with status still draft. A publishAt in the past is rejected rather than treated as publish-now, and publishing or unpublishing by hand cancels a schedule already pending. Publishing is refused when the content references a tenant value the project has not defined — a {{env.name}} with no matching entry under Project envs — and the refusal names the values, so define them or remove the references and publish again. Unpublishing is never refused for that reason. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
publishProjectLegalDocument
ChatGPTPublishes a draft legal document, making it immutable. Every locale listed in the project's enabled_locales must have non-empty content, otherwise the publish is rejected. A published document can never be edited or deleted, because core.user_legal_acceptances records who agreed to what and points at that exact row: editing it would make those records describe something nobody agreed to, and deleting it would take the consent records with it. Publishing a new version of a type leaves the previous one in place as the proof of what earlier users accepted. Required Giant Context Permission: legal.documents.update.
rejectDraft
ChatGPTRejects an AI-generated content draft. Deletes all materialized draft items from their content type tables and marks the draft as rejected. Required Giant Context Permission: resourcemanager.projects.get, mind.drafts.update.
rejectPlan
ChatGPTRejects a ready Mind plan so it cannot be used to generate a draft. Required Giant Context Permission: resourcemanager.projects.get, mind.plans.update.
removeWebsiteViewer
ChatGPTDeletes the member's account in the site's identity tenant and the record that they hold one. The person stays: they may be a contact, a subscriber or a lead, and removing them from a site's members says nothing about any of that — erasure is a separate request with its own runner. It does not end a live session: a session cookie is a signed token the edge verifies on its own and never checks against the provider, so somebody already signed in keeps reading until their token expires, within the hour. Re-inviting the same address afterwards creates a new account rather than restoring this one. Required Giant Context Permission: website.viewerAuth.update.
replaceFileContent
ChatGPTReplaces the content of an existing text file. The file must be a text-based type (Markdown, plain text, CSV, JSON, YAML, HTML, CSS, JS, XML, SVG). The file's storage object is overwritten, its size is updated, and AI embeddings are re-generated from the new content. The file ID, URL, metadata, and all references remain unchanged. Required Giant Context Permission: files.objects.update.
restoreContentVersion
ChatGPTRolls a content entity back to a prior version. Non-destructive: writes the snapshot's content to the live entity and appends a new 'revert' version, preserving forward history. Required Giant Context Permission: resourcemanager.projects.update.
restoreFileTrashItem
ChatGPTRestores a file or folder from the file trash back to the file manager, rebuilt from the snapshot taken when it was deleted. For folders, optionally restores all contained files and subfolders. A file whose folder is itself still in the trash comes back at the root; restoring the folder brings the whole subtree back in one action and keeps the arrangement. Requires specifying the item type (file or folder) in the request body. Returns counts of restored files and folders for folder-type items. Required Giant Context Permission: files.objects.update.
restoreProjectTrashBatch
ChatGPTRestores every trash entry that shares a batch id back to its original location. Batches are created when a single user action trashed multiple rows — for example, deleting a folder places the folder, its files, and its subfolders into the same batch. Folders are restored before files so parent-child foreign keys hold. Required Giant Context Permission: files.objects.update.
restoreProjectTrashItem
ChatGPTRestores a soft-deleted entity from the project trash back to its original location. Dynamically rebuilds the database INSERT from the stored JSONB entity snapshot. Returns the restored entity type, entity ID, and associated app ID. Required Giant Context Permission: files.objects.update.
saveFile
ChatGPTSaves a file to the project from raw text content (Markdown, Mermaid, CSV, JSON, YAML, plain text, etc.) or base64-encoded binary data — images (PNG, JPG, GIF, WebP, SVG) and documents alike (PDF, Word, Excel), with document text extracted and embedded exactly as a console upload would. Text goes in content and binary goes in base64Content; mimeType is inferred from the filename extension when it is not given, and the API accepts up to 20MB. grounding decides how the project's AI may use the file: 'fact', the default, is authoritative content that may be cited verbatim, and 'context' is background that shapes generated copy without being quoted. A 'context' file is always public — sending grounding 'context' with isPublic false coerces isPublic to true. This is the whole path for putting a file into a project over a tool: there is no signed-URL or multi-step variant, because that one needs direct network access to cloud storage. The file is stored in the project and processed for AI embeddings (text) or image classification (images). Accepts documents, notes, diagrams, structured data and screenshots. Required Giant Context Permission: files.objects.update.
searchContent
ChatGPTSearch the content of pages, posts, KB articles and developer docs in a project — by exact case-insensitive string (query), by block type (blockTypes), or both. A text query also searches each section's heading and subheading, not just block copy. Filter by content type and by draft/published status. Every match reports its full location — contentId (canonical type), sectionId, columnId and blockId — plus matchIn (block, heading or subheading). blockTypes is validated against the content type's palette, so an unknown type errors rather than returning an empty result. The field path, locale and snippet are populated for a text query and null for a pure block-type match, and the locale a match reports is the one that holds it — patching a different locale overwrites another language. Required Giant Context Permission: resourcemanager.projects.get.
searchFiles
ChatGPTSearches project files by their content using semantic/AI search. Returns the file records whose content matches the meaning of the query — id, filename, mime type and url — ranked by relevance, each with the snippet that matched. The unit of the result is the file rather than the passage. Required Giant Context Permission: files.objects.list.
searchSources
ChatGPTSemantic search across all project knowledge — files, pages, posts, KB articles, developer docs, SDK methods, emails, and private CRM data. Returns the most relevant text chunks ranked by similarity, with sourceType and sourceId citations. Required Giant Context Permission: resourcemanager.projects.get.
setContentVisibility
ChatGPTChanges who may read a content item and whether anything advertises it, and nothing else — not its content, status, slug or metadata. The two flags are independent. isListed governs whether the item appears in the sitemap, indexes, grids and search; an unlisted item stays live at its own URL, which is 'anyone with the link'. requiresViewerAuth governs whether an anonymous reader is served the body at all; a gated item renders the site's Sign In Page instead, never a 404. All four combinations are meaningful, including listed and gated — a page whose existence is public and whose contents are not. Only website pages and posts can be gated; a KB article, a developer doc or a landing can only be unlisted, and a request to gate one is refused by name. Only the flags sent are changed. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
setPersonField
ChatGPTMerges one key into the person's custom properties without touching the others. Holds ad-hoc structured data a person carries, such as plan, score or region. The value is stored in a provenance envelope {value, at, source: 'manual'}; pass the plain value, and an envelope you previously read passes through unchanged. Required Giant Context Permission: people.records.update.
submitContentToSearchEngines
ChatGPTSubmits a content item's public URL to the search engines that accept instant-indexing submissions, and nudges the rest to re-fetch the sitemap. Publishing or editing content already submits automatically. A separate submission matters when the page was edited outside the platform's knowledge, when a domain was verified after the content went live, or when an earlier submission failed. Only web-facing content has a URL to submit: pages, posts, KB articles, developer docs and the landings. Headers, footers, layouts and forms are not submittable because they have no URL of their own, even though editing one changes what a page renders. Drafts are not submitted either. Submissions coalesce: repeated calls for the same URL inside a five-minute window collapse into one. A response of submitted: false is not an error — it means the item has no public URL to submit, most often because it is a draft or the project has no verified custom domain. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
tagPerson
ChatGPTAdds a tag to a person. Tags are free-form strings used for segmenting, gating marketing messages, and ad-hoc grouping. Idempotent — adding an existing tag is a no-op. Required Giant Context Permission: people.records.create.
triggerIdeation
ChatGPTEnqueues a durable Mind ideation contract for this project. Optional 'target' narrows execution to one (contentType, operationKey) operation. Returns the run and contract IDs immediately. Required Giant Context Permission: resourcemanager.projects.get, mind.ideas.create.
unarchiveDraft
ChatGPTRestores a previously archived draft to the default list. Required Giant Context Permission: resourcemanager.projects.get, mind.drafts.update.
unpublishContent
ChatGPTTakes a published content item off the public site and returns it to draft. The body, slug and metadata are left untouched, so it can be published again unchanged, and the first-published date is kept rather than cleared. A pending scheduled publish is cancelled, so an item taken down stays down instead of reappearing when its old schedule comes due. The search engines are told the URL is gone and the public cache is purged, so the page stops being served rather than lingering in a cache or an index. The response reports alreadyInState when the item was a draft already. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
untagPerson
ChatGPTRemoves a tag from a person. Removing a tag the person does not carry is a no-op. Required Giant Context Permission: people.records.update.
updateAppSettings
ChatGPTMerges the given keys into the app's settings, validating them against the app's own declared schema — an unknown key or a wrong type is a 400 naming the offending key, not a silent write. These are app-level settings — the forms notification address, chat escalation routing, the website's default page shell — and not the settings on an individual page, form or email. Only the keys sent are changed; omitted keys keep their value. Send a key as null to clear it. Required Giant Context Permission: resourcemanager.projects.update.
updateBlock
ChatGPTMerges the supplied fields into a block's data and/or its styles and records a version. Send data, styles, or both; fields you omit keep their current value; send null to clear one. Styles cover padding, margins, borders, background, alignment and hideOnMobile. Locale maps merge per locale, so writing one language leaves the others intact. Validated against the block type's schema. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
updateDevelopersDocCategoryMeta
ChatGPTUpdates a developer docs category's internal handle, its public title and the description shown alongside it in navigation and listings. Only the fields you send are changed. name is the handle operators search by and no reader ever sees; title is the label in the navigation. Cannot change the category's slug, parent, order or icon — a category slug sits in the public path of every doc beneath it and re-slugging leaves no redirect. Required Giant Context Permission: developers.categories.update.
updateDevelopersDocMeta
ChatGPTUpdates the fields that describe a developer doc rather than govern it: SEO title, description, image, noindex, the excerpt, the featured image and tags. Only the fields you send are changed. Can rebind the page shell — the website app it borrows from, and its layout, header and footer. featuredImageUrl takes a file reference (file:{uuid}) from the project's files rather than a resolved URL, and tags replaces the whole list rather than adding to it. Cannot change the doc's content, status, visibility, order or category membership. Required Giant Context Permission: developers.docs.update.
updateDevelopersLandingMeta
ChatGPTUpdates the fields that describe the developer portal landing page rather than govern it: SEO title, description and image. Only the fields you send are changed. Can rebind the page shell — the website app it borrows from, and its layout, header and footer. Cannot change the landing page's content or visibility. Required Giant Context Permission: developers.landing.update.
updateEmailMeta
ChatGPTUpdates the fields that describe an email rather than govern it: its internal name and slug, the subject line, the preheader, and the trigger description saying when the Mind should send it. Only the fields you send are changed. An email is sent rather than served, so its slug is an internal reference and changing it breaks no link. Subject and preheader are the two reader-facing strings, and they are what an inbox prints side by side; emails have no title. Left null, the preheader slot is filled by whatever the body opens with. Can rebind the header and footer. Cannot change the email's content or status. Required Giant Context Permission: email.messages.update.
updateFormMeta
ChatGPTUpdates the fields that describe a form rather than govern it: its internal name, its description, and its settings — the message a visitor sees after submitting, the button label, the submission limit and the CRM tags. Only the fields you send are changed, and settings merge per key, so sending one leaves the rest alone. The editable settings are successMessage, submitButtonText, submissionLimit, hideFormOnComplete, closeDialogOnComplete, gcUrlRedirect, captchaEnabled, tags and source. Cannot change the form's slug, fields, content or active status. Required Giant Context Permission: forms.definitions.update.
updateKbArticleMeta
ChatGPTUpdates the fields that describe a knowledge base article rather than govern it: SEO title, description, image and noindex, plus the excerpt, tags and featured image. Only the fields you send are changed. featuredImageUrl and seo.image take a file reference (file:{uuid}) rather than a resolved URL, which keeps the image tracked as in-use so it cannot be deleted out from under the article. Can rebind the layout, header and footer. Cannot change the article's content, status, visibility, order or category assignments. Required Giant Context Permission: kb.articles.update.
updateKbCategoryMeta
ChatGPTUpdates a knowledge base category's internal handle, its public title and its description, the blurb shown beneath it in listings and on its own page. Only the fields you send are changed. name is the handle operators search by and no reader ever sees; title is the label on the page and in listings. Cannot change the category's slug or icon, reorder it, or move it in the hierarchy — a category slug sits in the public path of every article beneath it and re-slugging leaves no redirect. Required Giant Context Permission: kb.categories.update.
updateKbLandingMeta
ChatGPTUpdates the SEO title, description and image of the knowledge base landing page. Only the fields you send are changed. Can rebind its website, layout, header and footer. Cannot replace the landing's builder content or change its visibility. Required Giant Context Permission: kb.landing.update.
updateProjectLegalDocument
ChatGPTUpdates the localized content of a draft legal document, keyed by locale code. It works only while the document is a draft: a published one is permanent and the database refuses to change it, because the records of who accepted it point at that exact row and would otherwise describe something those people never agreed to. There is no delete for these documents, so correcting a draft in place is the only way to fix a mistake before it goes live, and a published mistake is superseded by a new version rather than edited. Required Giant Context Permission: legal.documents.update.
updateSection
ChatGPTPatches a section's own properties and records a version. Any section field may be patched; id, type and columns are refused with an error rather than ignored. Does not touch its blocks. Required Giant Context Permission: resourcemanager.projects.get, and the update permission for the content type named in contentType, checked against the app that owns contentId.
updateSegment
ChatGPTThe description is the definition, so editing it invalidates its compilation and approval together — a stale tree shown as current would be a wrong audience wearing a green checkmark — and enqueues a fresh mind.segment.compile contract. The segment is not consumable again until it recompiles and a human re-approves. A rename alone touches neither gate. Required Giant Context Permission: people.segments.update.
updateWebsiteBlogPageMeta
ChatGPTUpdates the fields that describe the website blog archive page rather than govern it: its internal name, and SEO title, description, image and noindex. Only the fields you send are changed. The archive is the app's blog-root singleton, so it has no slug. Can rebind the layout, header and footer. Cannot change the archive's content or visibility. Required Giant Context Permission: website.blogPage.update.
updateWebsiteLandingMeta
ChatGPTUpdates the fields that describe the website landing page rather than govern it: its internal name, and SEO title, description, image and noindex. Only the fields you send are changed. A landing is the app's root singleton, so it has no slug and no title. Can rebind the layout, header and footer. Cannot change the landing's content or visibility. Required Giant Context Permission: website.landing.update.
updateWebsiteNotFoundPageMeta
ChatGPTUpdates the fields that describe the website not found page rather than govern it: its internal name, and SEO title, description, image and noindex. Only the fields you send are changed. The 404 is the app's not-found singleton, so it has no slug. Can rebind the layout, header and footer. Cannot change the page's content or visibility. Required Giant Context Permission: website.notFoundPage.update.
updateWebsitePageMeta
ChatGPTUpdates the fields that describe a page rather than govern it: SEO title, description, image, noindex, featured image, and tags. Only the fields you send are changed. featuredImageUrl and seo.image take a file reference (file:{uuid}) rather than a resolved URL, which keeps the image tracked as in-use so it cannot be deleted out from under the page. Can rebind the layout, header and footer. Cannot change the page's content, status or visibility. Required Giant Context Permission: website.pages.update.
updateWebsitePostMeta
ChatGPTUpdates the fields that describe a post rather than govern it: its internal name, public title and slug, SEO title and description, excerpt, author name, publish date, tags and featured image. Only the fields you send are changed. featuredImageUrl and seo.image take a file reference (file:{uuid}) rather than a resolved URL, which keeps the image tracked as in-use so it cannot be deleted out from under the post. Renaming the slug moves the public URL and records a redirect from the old path automatically. Can rebind the layout, header and footer. Cannot change the post's content or status. Required Giant Context Permission: website.posts.update.
updateWebsiteSignInPageMeta
ChatGPTUpdates the fields that describe the website sign-in page rather than govern it: its internal name, and SEO title, description, image and noindex. Only the fields you send are changed. The sign-in page is the app's singleton, so it has no slug, and it carries no visibility flag. Can rebind the layout, header and footer. Cannot change the page's content. Required Giant Context Permission: website.signInPage.update.
welcomeMcp
ChatGPTA guide to the Giant Context platform: its data model, the draft workflow, page structure, block types, and how the factual inventory in a prompt bears on how visually varied a generated page comes out. Required Giant Context Permission: none beyond being authenticated.