For: Admins
Create and update cases with a manage key
List, create, read, update and delete your hub's cases from your own software, including their stage and custom fields.
In this article10 sections
Before you start
This page covers the case calls a manage key can make. Paths are under https://prd-api-manage.caseactive.com/v1/<hub id>.
Calls
| Call | What it does |
|---|---|
GET /cases | Lists your hub's cases, newest first |
POST /cases | Creates a case |
GET /cases/<case_id> | Reads one case |
PUT /cases/<case_id> | Changes a case |
DELETE /cases/<case_id> | Deletes a case for good |
GET /stages | Lists your hub's stages, to find their IDs |
GET /schemas?schema_type=cases | Reads your hub's case custom fields |
Listing cases
| Parameter | What it does | Required | Default |
|---|---|---|---|
type | 1 for open cases only, 0 for closed. Despite its name, it filters by status, not case type. | No | Both |
limit | How many cases a page holds, up to 1000 | No | 20 |
start_key | The startKey from the previous page | No | First page |
curl "https://prd-api-manage.caseactive.com/v1/ca-7e6d5c4b3a2f10/cases?type=1" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"data": {
"items": [
{
"case_id": "cc-1a2b3c4d5e6f70",
"host_id": "ca-7e6d5c4b3a2f10",
"ref_id": "rear-end-2026",
"title": "Jane Sample auto accident",
"case_type": "general",
"case_status": 1,
"case_stage": "stage::20260927120000_8c1f0e2d3b4a59",
"users": {
"cu-7e6d5c4b3a2f10": "role::bots",
"cu-4f1c2a9e8b7d60": "role::clients",
"cu-9d8c7b6a5f4e30": "role::staff"
},
"created_on": "2026-10-02T14:05:09+00:00"
}
],
"currentItemCount": 1,
"selfLink": "https://prd-api-manage.caseactive.com/v1/ca-7e6d5c4b3a2f10/cases?type=1"
}
}
usersmaps each person on the case to their roleRole A set of permissions that decides what someone can see and do on a case, such as staff or clients.. It includes your hub's Virtual AssistantVirtual Assistant An automated team member that posts welcome messages, check-ins and stage posts for the firm; its posts carry a Virtual Assistant badge., asrole::bots.- While more cases remain, the page also holds
nextLink, the next page's full address, andstartKey. CallnextLink, or sendstartKeyasstart_key, until a page comes back without them. - Cases being deleted are left out. To find a case by its Tag IDTag ID A permanent label you give a case, such as rear-end-2026, also shown as Reference ID and used in imports., see Search cases and users with a manage key.
Case fields
POST /cases and PUT /cases/<case_id> take these fields as JSON. Fields not listed are ignored.
| Field | What it does | Required | Default |
|---|---|---|---|
ref_id | The case's Tag ID: letters, numbers, dashes and slashes, kept in lower case. No two cases in your hub can share one. Set on create only; it can't be changed. | Yes, on create | — |
title | The case's name, shown to everyone on it | Yes, on create | — |
description | A description for staff. Clients don't see it. On a change, "" clears it. | No | None |
case_type | general, or one of your hub's case typesCase type A category for cases, such as general, used to aim automations at the right cases., spelled as under Settings › Fields. On a change, the case's own type is also accepted after you've removed it from your settings. | No | general |
case_status | 1 for open, 0 for closed | No | 1 |
case_stage | The ID of its stageStage A step a case moves through, such as Intake or Demand sent, which the firm names and describes and which shows on the case page., from GET /stages. On a change, "" takes the case off its stage. | No | No stage |
date_opened | The date the case opened, such as 2026-03-15 | No | Today, in UTC |
hidden_modules | Sections to hide on this case: any of case, convos, events, forms, signs, invoices, notes, tasks and team. Send [] to show them all again. | No | None hidden |
meta_data | Its custom fields; see below | No | None |
You can't add people on create; only the Virtual Assistant is put on a new case. Add them next with POST /cases/permissions; see Add and remove case members with a manage key.
Creating a case
curl -X POST https://prd-api-manage.caseactive.com/v1/ca-7e6d5c4b3a2f10/cases \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ref_id": "rear-end-2026", "title": "Jane Sample auto accident", "case_type": "general", "date_opened": "2026-10-02"}'
It answers 201 with the new case's ID:
{"data": {"case_id": "cc-1a2b3c4d5e6f70", "selfLink": "https://prd-api-manage.caseactive.com/v1/ca-7e6d5c4b3a2f10/cases"}}
Nobody is emailed. Your Assign Cases rules for every case, and for the case's type, put their people on it, so adding one of them yourself afterwards is refused as a duplicate. A case created at a stage gets no milestone post.
Reading a case
GET /cases/<case_id> answers the case's case_id, host_id, ref_id, title, description, case_type, case_status, case_stage, date_opened, hidden_modules, meta_data, users_ct (how many people are on it, the Virtual Assistant included), created_on and updated_on. To see who's on it, use GET /cases/permissions?case_id=<case_id>.
Changing a case
PUT /cases/<case_id> takes any of the case fields but ref_id, and changes only the ones you send. It answers 204 with no body.
- Moving an open case into a stage adds that stage's milestone post, as the Virtual Assistant, if your hub has one for it; see Add a post automatically when a case reaches a stage. Nothing else is posted or sent: closing a case or changing its type tells nobody.
meta_datareplaces every custom field the case has.- A closed case can still be changed, so a sync can reopen it with
"case_status": 1.
Stages and custom fields
GET /stages lists your hub's stages, which an Admin sets up under Settings › Stages, in order, with each one's stage_id, name, description and order, all at once. A key can read stages but not change them.
GET /schemas?schema_type=cases answers your hub's case custom fields, set under Settings › Fields, as a list of pages, each with its fields' keys, labels and types. Send meta_data as a list with one object per page, in the same order, each holding values by field key:
{"meta_data": [{"policy_number": "PN-5521", "insurer": "Northwind Mutual"}]}
A value must suit its field's type, or the call is refused. Required is checked only by the case forms in the Admin Panel and the Lobby, so a case you create or update here can leave a required field empty.
Deleting a case
DELETE /cases/<case_id> answers 204. The case leaves your lists at once and is then deleted for good, with its posts, files, forms, e-signs, invoices, events, tasks and notes. It can't be undone, and nobody is told. Its Tag ID is free again once the deletion has finished.
If a call is refused
| Status | message | Why |
|---|---|---|
| 400 | SchemaFieldsException | A field is missing or invalid; errors names it. An unknown case type or stage is FieldValidatorFailedException on that field. |
| 400 | CaseReferenceIdExistsException | Another case already has that Tag ID, even one still being deleted. reason holds that case's case_id. |
| 404 | ItemNotFoundException | The case doesn't exist, belongs to another hub, or is being deleted |
| 403 | ManageBillingInactiveException | Your hub's Admin Panel is locked after a failed payment |
For the error body and the rest of the codes, see Handle API errors and status codes.