- Create an API token in the dashboard.
POSTa case to your workflow’s cases endpoint with itsattributes.- Fetch the case to read its current status and attributes.
This endpoint only works for workflows whose case source is direct. Ticketing and email workflows take in cases through their own channels and can’t be written to with this API.
Create an API token
- Go to Tokens in the dashboard.
- Click Create Token, choose the API scope, and click Create.
- Copy the token immediately — it’s shown once and cannot be retrieved again. API tokens look like
api_xxxxxxxx….
Find your workflow ID
Open the direct case workflow in the dashboard. The numeric ID is the last segment of its URL (https://dash.champ.ai/app/workflows/<WORKFLOW_ID>). You’ll use it in the request path below.
Create a case
Send aPOST request to the workflow’s cases endpoint:
Path parameter. The numeric ID of a direct case workflow.
Request header.
Bearer <YOUR_API_TOKEN> — an API-scoped token from the Tokens page.Request body. A human-readable title for the case. If you omit it or leave it blank, Champ stamps a timestamped default like
API - 2026-05-28 17:04:12 UTC.Request body. The case’s field values, validated against the workflow’s attribute schema. Any attribute that is required in the workflow must be supplied here. Omit it (or pass
{}) for workflows with no required attributes.The body accepts only
subject and attributes. Any other top-level key is rejected with a 422 before the case is created.| Field | Description |
|---|---|
id | Unique case ID. Use it to fetch the case. |
workflow_id | The workflow this case belongs to. |
subject | The case title. |
status | Case status. New cases start as Open; the workflow updates it as it runs. |
attributes | The case’s current field values. |
Fetch a case
Read a case’s current status and attributes by ID:case shape as above. As the workflow runs, the status and attributes reflect the latest state.
Case statuses
Every case carries astatus. A new case always starts as Open, and the workflow’s automation moves it
through the rest as it runs — you can’t set or change status with this API.
Each workflow ships with three default statuses that are always present:
| Status | Meaning |
|---|---|
Open | The case is live and the workflow is working it. Every case starts here. |
Closed | The case is resolved and done. The workflow has finished with it. |
Error | The workflow hit a problem it couldn’t resolve and parked the case. |
Awaiting customer or
Pending review) to model the intermediate stages of its own process. A case’s status is always one of the
statuses declared on its workflow, so the exact set you’ll see depends on how that workflow is configured — open the
workflow in the dashboard to view its full status list.
Status is driven entirely by the workflow’s automation. There’s no endpoint to set it, and a case can only ever be
in a status its workflow has defined.
Validation errors
Ifattributes doesn’t match the workflow’s schema — a missing required field, a wrong type — the request returns 422 with a validation_errors array. Each entry points to the offending field with a JSON Pointer:
Errors
| Status | When |
|---|---|
401 | Missing or invalid Authorization header. |
404 | Workflow or case not found, or it belongs to another organization. |
422 | The workflow isn’t a direct case workflow, an unsupported body key was sent, attributes wasn’t an object, or attributes failed validation. |
error message.
