Project Workflows
Manage project workflows and automation runs.
GET
Get a workflow run and its tasks
/organizations/{organizationId}/projects/{projectId}/workflows/runs/{runId}Parameters
organizationIdRequired
path · stringOrganization ID
projectIdRequired
path · stringProject ID
runIdRequired
path · stringWorkflow run ID
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 run = await gc.projectWorkflows.getWorkflowRun({ organizationId: org.id, projectId: projects[0].id, runId: "run_123",});
DELETE
Dismiss a workflow run
/organizations/{organizationId}/projects/{projectId}/workflows/runs/{runId}Soft-hide a run from the default list view. The run itself is preserved for audit and can still be fetched by ID or listed with includeDismissed=true.
Parameters
organizationIdRequired
path · stringOrganization ID
projectIdRequired
path · stringProject ID
runIdRequired
path · stringWorkflow run ID
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.projectWorkflows.dismissWorkflowRun({ organizationId: org.id, projectId: projects[0].id, runId: "run_123",});
GET
List workflow runs
/organizations/{organizationId}/projects/{projectId}/workflows/runsReturns a paginated list of workflow runs for the project. Filter by status (pending/running/succeeded/failed/cancelled) or workflow type. Dismissed runs are hidden by default.
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: title, status, type, createdAt, startedAt, completedAt. Direction is 'asc' or 'desc' and defaults to 'asc'.
search
query · stringFree-text search. Matched against: title.
status
query · stringFilter by status. Operators: status=value (equals), status_ne, status_gt, status_gte, status_lt, status_lte, status_like (contains), status_isnull=true|false, status_has=value (jsonb array contains), status[]=a&status[]=b (in).
type
query · stringFilter by type. Operators: type=value (equals), type_ne, type_gt, type_gte, type_lt, type_lte, type_like (contains), type_isnull=true|false, type_has=value (jsonb array contains), type[]=a&type[]=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).
startedAt
query · stringFilter by startedAt. Operators: startedAt=value (equals), startedAt_ne, startedAt_gt, startedAt_gte, startedAt_lt, startedAt_lte, startedAt_like (contains), startedAt_isnull=true|false, startedAt_has=value (jsonb array contains), startedAt[]=a&startedAt[]=b (in).
completedAt
query · stringFilter by completedAt. Operators: completedAt=value (equals), completedAt_ne, completedAt_gt, completedAt_gte, completedAt_lt, completedAt_lte, completedAt_like (contains), completedAt_isnull=true|false, completedAt_has=value (jsonb array contains), completedAt[]=a&completedAt[]=b (in).
includeDismissed
query · stringWhen 'true', include runs that have been dismissed by the user.
organizationIdRequired
path · stringOrganization ID
projectIdRequired
path · stringProject ID
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const org = await gc.organizations.getOrganizationBySlug({ slug: "default-org" });const { projects } = await gc.projects.listProjects({ organizationId: org.id });
const { workflowRuns } = await gc.projectWorkflows.listWorkflowRuns({ organizationId: org.id, projectId: projects[0].id,});
POST
Start a workflow run
/organizations/{organizationId}/projects/{projectId}/workflows/runsPersists a new run of the given workflow type and enqueues its root tasks (tasks with no dependencies). The orchestrator will pick them up on its next tick.
Parameters
organizationIdRequired
path · stringOrganization ID
projectIdRequired
path · stringProject ID
BodyRequired
typeRequired
stringWorkflow type identifier (must match a registered shape)
input
objectArbitrary input payload forwarded to the root task.
title
stringDisplay title. Defaults to the shape's title.
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 workflowRun = await gc.projectWorkflows.createWorkflowRun({ organizationId: org.id, projectId: projects[0].id, data: { workflowId: "my-workflow-id" }});
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.