Drafts
Generate, edit, preview, and publish content drafts.
Unarchive a draft back into the default list; already-unarchived is a no-op
/organizations/{organizationId}/projects/{projectId}/mind/drafts/{draftId}/unarchiveRestores a previously archived draft to the default list.
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const result = await gc.drafts.unarchiveDraft({ organizationId: org.id, projectId: projects[0].id, draftId: "your-draft-id",});
Archive an accepted draft to hide it from the default list without deleting
/organizations/{organizationId}/projects/{projectId}/mind/drafts/{draftId}/archiveHides an accepted draft from the default list without deleting it. Archived drafts are preserved as a paper trail and for AI training data. Only accepted or partially_accepted drafts can be archived.
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const result = await gc.drafts.archiveDraft({ organizationId: org.id, projectId: projects[0].id, draftId: "draft-123",});
Generate AI edits to existing content; async, returns a pending draftId to poll
/organizations/{organizationId}/projects/{projectId}/drafts/generate/editGenerates 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. For brand-new content, use generateNewDraft.
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const draft = await gc.drafts.generateEditDraft({ organizationId: org.id, projectId: projects[0].id, data: { content: "Updated draft content" }});
Get one draft with its prompt, generated content and status; poll while pending
/organizations/{organizationId}/projects/{projectId}/mind/drafts/{draftId}Retrieves the full details of a single AI-generated content draft including the prompt, generated content, tool calls, and sources. Pass lite=true while polling to get status, qualityScore and errorMessage without the content tree, tool calls or sources.
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const draft = await gc.drafts.getDraft({ organizationId: org.id, projectId: projects[0].id, draftId: "draft-id",});
Delete a rejected, failed or cancelled draft permanently; other statuses return 409
/organizations/{organizationId}/projects/{projectId}/mind/drafts/{draftId}Permanently 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).
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const result = await gc.drafts.deleteDraft({ organizationId: org.id, projectId: projects[0].id, draftId: "draft-123",});
Generate new content from a prompt; async, takes 5-15 minutes, nothing publishes yet
/organizations/{organizationId}/projects/{projectId}/drafts/generate/newGenerates NEW content as a reviewable draft from a natural language prompt. The draft is a proposal — nothing publishes until it is accepted. For changes to existing content, use generateEditDraft.
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const draft = await gc.drafts.generateNewDraft({ organizationId: org.id, projectId: projects[0].id, data: { title: "New Draft" }});
Create a copy-on-write draft of existing content for manual editing, no AI
/organizations/{organizationId}/projects/{projectId}/drafts/editCreates a draft copy of existing content for non-destructive editing. The original stays untouched until the draft is accepted. On accept, the copy's content replaces the original. On reject, the copy is deleted.
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const draft = await gc.drafts.createEditDraft({ organizationId: org.id, projectId: projects[0].id, data: {},});
List a project's drafts newest first; archived hidden unless includeArchived
/organizations/{organizationId}/projects/{projectId}/mind/draftsReturns a paginated list of AI-generated content drafts for the specified project. By default archived drafts are hidden — pass includeArchived=true to include them.
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "my-org-slug" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const { drafts } = await gc.drafts.listDrafts({ organizationId: org.id, projectId: projects[0].id,});