Calls
Every call your app sends through Mubit is recorded. These operations list and read those calls, and add a rating or a correction to one.
All paths are under https://api.mubit.ai, with a management key in Authorization: Bearer. Management API covers keys, roles, pagination, retries and errors. The samples read the key from MUBIT_MANAGEMENT_KEY.
List calls
GET /api/v1/calls
Lists the recorded calls, newest first. Filter by project, model, status and time.
Role: read or higher.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
project | query | string | no | |
model | query | string | no | |
status | query | string: ok, error, discarded | no | |
created_after | query | string (date-time) | no | |
created_before | query | string (date-time) | no | |
limit | query | integer | no | Number of records to return (1-200) |
cursor | query | string | no | Sealed pagination cursor from previous page |
curl "https://api.mubit.ai/api/v1/calls?project=$PROJECT_ID&limit=20" \
-H "Authorization: Bearer $MUBIT_MANAGEMENT_KEY"Response 200: List of calls
Each item of data:
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
project | string | yes | |
model_requested | string | no | |
served_by | string | no | |
status | string | yes | |
latency_ms | integer | no | |
created_at | string (date-time) | yes |
{
"data": [
{
"id": "call_019283",
"project": "prj_prod",
"model_requested": "gpt-4o",
"served_by": "adapter",
"status": "ok",
"latency_ms": 245,
"created_at": "2026-10-26T11:50:00Z"
}
],
"next_cursor": null
}| Status | Meaning |
|---|---|
400 | Bad request (validation, invalid_cursor, out_of_bounds) |
401 | Unauthenticated (missing, invalid, or expired token) |
403 | Forbidden (role_required, role_ceiling, project_scoped, forbidden, or a key that isn't a management key) |
500 | Internal server error |
Get a call
GET /api/v1/calls/{call_id}
Returns one call with its request, its answer, who served it, and its timing.
Role: read or higher.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
call_id | path | string | yes |
curl "https://api.mubit.ai/api/v1/calls/$CALL_ID" \
-H "Authorization: Bearer $MUBIT_MANAGEMENT_KEY"Response 200: Call details
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
project | string | yes | |
request | object | yes | |
response | object, nullable | no | |
served_by | string | no | |
status | string | yes | |
latency_ms | integer | no | |
created_at | string (date-time) | yes |
{
"id": "call_019283",
"project": "prj_prod",
"request": {
"messages": [
{
"role": "user",
"content": "Calculate tax"
}
]
},
"response": {
"content": "The computed tax is $15.00"
},
"served_by": "adapter",
"status": "ok",
"latency_ms": 245,
"created_at": "2026-10-26T11:50:00Z"
}| Status | Meaning |
|---|---|
401 | Unauthenticated (missing, invalid, or expired token) |
403 | Forbidden (role_required, role_ceiling, project_scoped, forbidden, or a key that isn't a management key) |
404 | Not found |
500 | Internal server error |
Rate a call
POST /api/v1/calls/{call_id}/feedback
Rates a call up or down, with an optional comment (at most 500 characters) and correction (at most 8,000 characters): the answer the call should have given. The rating is stored with the call, as a rating in the console is.
Role: member or higher.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
call_id | path | string | yes | |
Idempotency-Key | header | string | no | Unique key for safe write retries within 24h |
| Field | Type | Required | Description |
|---|---|---|---|
rating | string: up, down | yes | |
comment | string | no | |
correction | string | no |
curl -X POST "https://api.mubit.ai/api/v1/calls/$CALL_ID/feedback" \
-H "Authorization: Bearer $MUBIT_MANAGEMENT_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{"rating":"down","comment":"Output missed the sales tax line item."}'Response 200: Feedback recorded
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
call_id | string | yes | |
rating | string | yes |
{
"id": "fb_09876",
"call_id": "call_019283",
"rating": "down"
}| Status | Meaning |
|---|---|
400 | Bad request (validation, invalid_cursor, out_of_bounds) |
401 | Unauthenticated (missing, invalid, or expired token) |
403 | Forbidden (role_required, role_ceiling, project_scoped, forbidden, or a key that isn't a management key) |
404 | Not found |
500 | Internal server error |