Giant Context
Giant ContextObtenez un accès anticipé

Forms

Manage forms, fields, and form submissions.


GET

Get one form's fields, settings and content blocks in Builder format

/organizations/{organizationId}/projects/{projectId}/apps/forms/{appId}/forms/{formId}

Retrieve 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 NOT HERE — it is one setting for the whole Forms app, not per form: read settings.notifyEmail from getProjectApp for this appId. This description used to promise it on the form, which is how it came to be reported as missing.

Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
appIdRequired
path · string
formIdRequired
path · string
SDK
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 form = await gc.forms.getForm({  organizationId: org.id,  projectId: projects[0].id,  appId: "your-app-id",  formId: "your-form-id",});
DELETE

Delete form

/organizations/{organizationId}/projects/{projectId}/apps/forms/{appId}/forms/{formId}

Soft-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.

Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
appIdRequired
path · string
formIdRequired
path · string
SDK
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 { apps } = await gc.projects.listProjectApps({  organizationId: org.id,  projectId: projects[0].id,});const { forms } = await gc.forms.listForms({  organizationId: org.id,  projectId: projects[0].id,  appId: apps[0].id,});
const result = await gc.forms.deleteForm({  organizationId: org.id,  projectId: projects[0].id,  appId: apps[0].id,  formId: forms[0].id,});
PATCH

Update a form's name and description; cannot re-slug it or change fields

/organizations/{organizationId}/projects/{projectId}/apps/forms/{appId}/forms/{formId}

Updates 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. Cannot change the form's slug, fields, content or active status — use updateBlock and the section tools for content.

Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
appIdRequired
path · string
formIdRequired
path · string
BodyRequired
name
stringInternal use only
settings
object
description
union
SDK
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.forms.updateFormMeta({  organizationId: org.id,  projectId: projects[0].id,  appId: "app-123",  formId: "form-123",  data: { title: "Updated Form Title" }});
GET

Get one submission's full answers plus its user agent, IP and referer

/organizations/{organizationId}/projects/{projectId}/apps/forms/{appId}/forms/{formId}/submissions/{submissionId}

Retrieve 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.

Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
appIdRequired
path · string
formIdRequired
path · string
submissionIdRequired
path · string
SDK
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 { apps } = await gc.projects.listProjectApps({  organizationId: org.id,  projectId: projects[0].id});const { forms } = await gc.forms.listForms({  organizationId: org.id,  projectId: projects[0].id,  appId: apps[0].id});const { submissions } = await gc.forms.listFormSubmissions({  organizationId: org.id,  projectId: projects[0].id,  appId: apps[0].id,  formId: forms[0].id});
const submission = await gc.forms.getFormSubmission({  organizationId: org.id,  projectId: projects[0].id,  appId: apps[0].id,  formId: forms[0].id,  submissionId: submissions[0].id});
GET

List one form's submissions, newest first, with submitted data and metadata

/organizations/{organizationId}/projects/{projectId}/apps/forms/{appId}/forms/{formId}/submissions

Retrieve 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. Supports full-text search across submission data.

Parameters
page
query · numberPage number to return, 1-indexed. Defaults to 1.
pageSize
query · numberItems per page (1-100). Defaults to 10.
lite
query · stringWhen 'true', return only essential fields (id, slug, title/name) to reduce payload size. Useful for context fetching and link resolution.
sort
query · stringSort specifier as 'field:direction'. Sortable fields: createdAt. Direction is 'asc' or 'desc' and defaults to 'asc'.
search
query · stringFree-text search. Matched against: data.
createdAt
query · stringFilter by createdAt. Operators: createdAt=value (equals), createdAt_ne, createdAt_gt, createdAt_gte, createdAt_lt, createdAt_lte, createdAt_like (contains), createdAt_isnull=true|false, createdAt_has=value (jsonb array contains), createdAt[]=a&createdAt[]=b (in).
organizationIdRequired
path · string
projectIdRequired
path · string
appIdRequired
path · string
formIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { id: organizationId } = await gc.organizations.getOrganizationBySlug({ slug: "my-org" });const { projects } = await gc.projects.listProjects({ organizationId });const projectId = projects[0].id;
const { apps } = await gc.projects.listProjectApps({ organizationId, projectId });const appId = apps[0].id;
const { forms } = await gc.forms.listForms({ organizationId, projectId, appId });const formId = forms[0].id;
const { submissions } = await gc.forms.listFormSubmissions({  organizationId,  projectId,  appId,  formId,});
GET

List forms in a Forms app with their fields and submission counts, newest first

/organizations/{organizationId}/projects/{projectId}/apps/forms/{appId}/forms

Retrieve 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 (notification email, redirect URL), active/inactive status, creation and update timestamps, and a count of how many submissions have been received. Supports searching forms by name or slug.

Parameters
page
query · numberPage number to return, 1-indexed. Defaults to 1.
pageSize
query · numberItems per page (1-100). Defaults to 10.
lite
query · stringWhen 'true', return only essential fields (id, slug, title/name) to reduce payload size. Useful for context fetching and link resolution.
sort
query · stringSort specifier as 'field:direction'. Sortable fields: name, slug, isActive, createdAt, updatedAt. Direction is 'asc' or 'desc' and defaults to 'asc'.
search
query · stringFree-text search. Matched against: name, slug.
slug
query · stringFilter by slug. Operators: slug=value (equals), slug_ne, slug_gt, slug_gte, slug_lt, slug_lte, slug_like (contains), slug_isnull=true|false, slug_has=value (jsonb array contains), slug[]=a&slug[]=b (in).
isActive
query · stringFilter by isActive. Operators: isActive=value (equals), isActive_ne, isActive_gt, isActive_gte, isActive_lt, isActive_lte, isActive_like (contains), isActive_isnull=true|false, isActive_has=value (jsonb array contains), isActive[]=a&isActive[]=b (in).
createdAt
query · stringFilter by createdAt. Operators: createdAt=value (equals), createdAt_ne, createdAt_gt, createdAt_gte, createdAt_lt, createdAt_lte, createdAt_like (contains), createdAt_isnull=true|false, createdAt_has=value (jsonb array contains), createdAt[]=a&createdAt[]=b (in).
updatedAt
query · stringFilter by updatedAt. Operators: updatedAt=value (equals), updatedAt_ne, updatedAt_gt, updatedAt_gte, updatedAt_lt, updatedAt_lte, updatedAt_like (contains), updatedAt_isnull=true|false, updatedAt_has=value (jsonb array contains), updatedAt[]=a&updatedAt[]=b (in).
organizationIdRequired
path · string
projectIdRequired
path · string
appIdRequired
path · string
SDK
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 { forms } = await gc.forms.listForms({  organizationId: org.id,  projectId: projects[0].id,  appId: "app_123"});

BuiltAutonomously With AI
This content was built autonomously. Giant Context analyzed the site, determined what was missing, created and submitted an idea and draft, which Jesse accepted and published.
[0]
Produit
  • Comment ça marche
  • Mind
  • Créer
  • Capturer
  • Cultiver
  • Optimiser
  • Publication
  • Tarifs
  • Cas d'usage

© 2026 Giant Context
Politique de confidentialitéConditions d'utilisationPolitique relative aux cookiesUtilisation acceptable
Powered by
Forms | Giant Context