List conversations

Search and filter your org's conversation history by agent, date, ticket ID, model, or title keyword.

GET /api/v1/conversations

Returns a paginated list of conversations, newest first. Rich filter surface lets you search by ticket ID, metadata, date range, model, title keyword, and source.

Scope: conversations:read

Default behavior

By default every conversation is visible except sub-agent runs, which are excluded because they'd dominate the list for any org running multi-agent workflows. To see sub-agent runs, pass source=sub-agent explicitly.

Query parameters

Pagination

ParamTypeDefaultNotes
cursorstringOpaque token from a previous response's meta.next_cursor.
limitinteger25Range 1–100.

Resource filters

ParamTypeNotes
agent_idstringFilter to one agent. Accepts agent_<24 hex> or a bare ObjectId.
sourceenumdashboard | autonomous | embed | sub-agent. Sub-agent runs only appear when explicitly requested.
modelstringExact match against the model used (e.g. gpt-5-mini).
parent_conversation_idstringFilter to sub-agent runs of one parent conversation.
conversation_numberintegerExact match against the per-org sequence number. ?conversation_number=42 fetches conversation #42.

Date filters

ParamTypeNotes
sinceISO 8601last_message_at >= since. Back-compat alias for last_message_after.
created_after / created_beforeISO 8601Half-open range on created_at.
last_message_after / last_message_beforeISO 8601Half-open range on last_message_at.

Metadata + search

ParamTypeNotes
ticket_idstring or integerShorthand. Matches metadata.ticketId, metadata.ticket_id, OR triggerPayload.ticket.id. Both string and numeric storage forms checked.
metadata[KEY]stringMatch against the Mixed metadata field by bracket notation: ?metadata[priority]=high&metadata[region]=apac. String and numeric forms tried; "true"/"false" also coerced to boolean. Keys with $ or . are silently dropped to prevent operator injection.
qstringCase-insensitive regex search against title only. Special regex characters escaped, paste search terms verbatim.

Examples

Find conversations about ticket 12345

curl 'https://dashboard.getmacha.com/api/v1/conversations?ticket_id=12345' \
  -H "Authorization: Bearer $MACHA_API_KEY"

Autonomous conversations from last week using gpt-5-mini

curl 'https://dashboard.getmacha.com/api/v1/conversations?source=autonomous&model=gpt-5-mini&created_after=2026-06-17T00:00:00Z' \
  -H "Authorization: Bearer $MACHA_API_KEY"

Sub-agent runs of one parent

curl 'https://dashboard.getmacha.com/api/v1/conversations?source=sub-agent&parent_conversation_id=conv_6a28f567ba502f55d177bb50' \
  -H "Authorization: Bearer $MACHA_API_KEY"

Conversations tagged with custom metadata

curl 'https://dashboard.getmacha.com/api/v1/conversations?metadata%5Bpriority%5D=high&metadata%5Bregion%5D=apac' \
  -H "Authorization: Bearer $MACHA_API_KEY"

Example response

{
  "data": [
    {
      "id": "conv_6a392325b438d825ccaf0dc1",
      "title": "process ticket 549",
      "source": "autonomous",
      "agent_id": "agent_6a28e310f2ec711ef6dc1dcf",
      "model": "gpt-5",
      "autonomous": true,
      "is_onboarding": false,
      "is_simulation": false,
      "conversation_number": 225,
      "parent_conversation_id": null,
      "credits_used": 3,
      "metadata": { "ticketId": 549 },
      "message_count": null,
      "last_message_at": "2026-06-10T05:26:55.455Z",
      "created_at": "2026-06-10T05:25:59.447Z",
      "updated_at": "2026-06-10T05:26:56.048Z"
    }
  ],
  "meta": {
    "request_id": "req_...",
    "next_cursor": "conv_6a28f567ba502f55d177bb50"
  }
}

Errors

StatusCodeWhen
401unauthorizedMissing / invalid / revoked key.
403insufficient_scopeKey lacks conversations:read.
422validation_failedBad date format, unknown source value, malformed cursor, etc.
429rate_limitedPer-key ceiling exceeded.
Don't change filters mid-traversal

The cursor is filter-scoped. Restart from scratch (no cursor) when you change the filter set.

© 2026 AGZ Technologies Private Limited