GraphQL
The entire public API is mirrored as GraphQL. Authentication and versioning headers are identical to REST.
https://api.circa.ai/graphqlAuthenticate with x-api-key, scope to a team with x-team-id, and (optionally) pin behavior with Circa-Version — exactly as for REST.
Schema overview
type Query {
apiVersion: PublicApiVersion!
me: PublicUser!
processes(input: PublicListInput): PublicProcessesPage!
processesPulled(input: PublicListInput): PublicProcessesPage!
materials(input: PublicListInput): PublicMaterialsPage!
materialsPulled(input: PublicListInput): PublicMaterialsPage!
}
type Mutation {
pullDatapoints(input: PullDatapointInput!): PullDatapointResult!
}See Queries for the full input shape and return type of each query, and Mutations for pullDatapoints.
Example
curl -s 'https://api.circa.ai/graphql' \
-H 'Content-Type: application/json' \
-H 'x-api-key: circa_live_xxx' \
-H 'x-team-id: TEAM_ID_FROM_OVERVIEW' \
-H 'Circa-Version: 2026-05-11.obsidian' \
-d '{"query":"query { me { id email } materials(input: {limit: 5}) { items { id name } total } }"}'Playground
Try queries interactively at the GraphQL playground. Paste these headers into the HTTP Headers tab at the bottom:
{
"x-api-key": "circa_live_REPLACE_ME",
"x-team-id": "4b6f9c28-6f4e-4e7f-a36d-2ff989045d10",
"Circa-Version": "2026-05-11.obsidian"
}GraphQL operations appear in your request log with method GQL and path /public/graphql#OperationName for easy filtering.