Project Apps
Create, configure, restore, and delete project apps.
Get a project app by slug
/organizations/{organizationId}/projects/{projectId}/apps/by-slug/{appSlug}Retrieves the full details of a single app by its URL-friendly slug within the specified project. This is an alternative to looking up an app by ID when you have the human-readable slug instead. Returns the same complete app object as the get-by-ID endpoint including name, slug, app type, configuration, and timestamps.
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 app = await gc.projectApps.getProjectAppBySlug({ organizationId: org.id, projectId: projects[0].id, appSlug: "my-app",});
Read one app's settings, whatever kind of app it is
/organizations/{organizationId}/projects/{projectId}/apps/{appId}/settingsReturns 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.
curl -X GET "https://api.giantcontext.com/organizations/organizationId_uuid/projects/projectId_uuid/apps/appId_uuid/settings" \ -H "Authorization: Bearer $API_KEY"Change one app's settings, merging into what is already there
/organizations/{organizationId}/projects/{projectId}/apps/{appId}/settingsMerges 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. Only the keys sent are changed; omitted keys keep their value. Send a key as null to clear it.
curl -X PATCH "https://api.giantcontext.com/organizations/organizationId_uuid/projects/projectId_uuid/apps/appId_uuid/settings" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "settings": "settings_value"}'Get a project app by ID
/organizations/{organizationId}/projects/{projectId}/apps/{appId}Retrieves 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.
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 app = await gc.projectApps.getProjectApp({ organizationId: org.id, projectId: projects[0].id, appId: "your-app-id",});
List soft-deleted apps in a project's trash, restorable or permanently deletable
/organizations/{organizationId}/projects/{projectId}/apps/trashReturns 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.
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.projectApps.listDeletedProjectApps({ organizationId: org.id, projectId: projects[0].id,});
List a project's active apps and their types to obtain the appId
/organizations/{organizationId}/projects/{projectId}/appsReturns 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. Supports pagination and search filtering.
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.projectApps.listProjectApps({ organizationId: org.id, projectId: projects[0].id,});