Skip to main content
POST
Create chat completion

Authorizations

Authorization
string
header
required

API key for authentication. Format: gcai_xxxxxxxxx

Create API keys in the GC AI app under Settings → API.

Headers

Prefer
string

Optional RFC 7240 wait preference, for example wait=0. If both this header and the wait query parameter are supplied, they must match.

Example:

"wait=0"

Query Parameters

wait
integer | null

Optional long-poll wait time in seconds. Use 0 for fire-and-forget behavior. If both wait and Prefer: wait=... are supplied, they must match. Values above 90 are clamped.

Required range: x >= 0
Example:

0

Body

application/json
message
string
required

The user's message or prompt

Minimum string length: 1
Example:

"What are the key terms to look for in a software license agreement?"

file_ids
string<uuid>[]

Optional uploaded file IDs to attach as context for this completion. Upload files first via POST /files.

Example:
playbook_ids
string<uuid>[]

Optional playbook IDs to ground the completion in (up to 20). The model uses each playbook's checks and guidance to structure its review of the attached files. Discover playbooks via GET /playbooks.

Org-scoped keys can use org-visible and official playbooks.

Maximum array length: 20
Example:
playbook_id
string
deprecated

Deprecated and no longer accepted. Use playbook_ids (an array) instead. Requests that include this field are rejected with a 400 so the playbook is never silently dropped.

skill_ids
string<uuid>[]

Optional skill IDs to run on the first turn. Each skill's instructions are injected as context for this completion. Discover skills via GET /skills.

Only valid when starting a new chat — omit them when continuing with chat_id.

Example:
chat_id
string<uuid>

Optional chat ID to continue an existing conversation, from the chat_id of a prior completion. Omit to start a new chat.

Conversation state is held server-side, so send only your new message (plus any new file_ids) — do not re-send prior turns or previously returned documents/emails/diagrams. Only one turn may be in flight per chat at a time. See Multi-turn Conversations.

Example:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

Response

Job completed within the effective wait window

job_id
string<uuid>
required

Async job identifier

kind
enum<string>
required

Stable job kind for this endpoint

Available options:
chat/completions
status
enum<string>
required

Current job status

Available options:
pending,
running,
succeeded,
failed,
canceled
result
object | null
required

Completion payload when the job has succeeded

error
object | null
required

Failure payload when the job has failed

created_at
string
required

ISO 8601 creation timestamp

completed_at
string | null
required

ISO 8601 completion timestamp, or null when not terminal