View Categories

Conversations

The Conversations API lets you list and retrieve conversation records for your Agent, and pause or resume the Agent on a specific conversation. Conversations are identified by an internal UUID and optionally by your own external_id (the same value you pass as metadata.conversation on chat completions).

Base path: /api/v1/conversations on your Agent’s domain.

Authentication #

See Authentication on the Overview page for how to authenticate Fusion API requests. An API key is always required for Conversations endpoints — same-origin requests are not exempt. Results are limited to the authenticated Agent (and its team).

List Conversations #

Use GET /api/v1/conversations to get a paginated list of conversations for the authenticated Agent, ordered by started_at descending.

curl \
--header 'x-api-key: apg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--url 'https://my.gospel.bot/api/v1/conversations?page=1&per_page=50'

Pagination #

ParameterTypeDefaultMaxDescription
pageinteger1Page number
per_pageinteger50100Records per page

Response #

{
    "data": [
        {
            "id": "11111111-1111-1111-1111-111111111111",
            "external_id": "conv-123",
            "agent_id": 7,
            "team_id": 3,
            "tags": null,
            "started_at": "2026-07-22 12:00:00",
            "ended_at": null,
            "agent_paused": false,
            "agent_paused_at": null,
            "agent_resumed_at": null
        }
    ],
    "total": 1,
    "page": 1,
    "per_page": 50
}

total reflects the full count for the Agent (not just the current page).

Get Conversation #

Use GET /api/v1/conversations/{id} to retrieve a single conversation. The path accepts either:

  • Internal UUID (id)
  • Your external_id string (team-scoped)

If the conversation does not exist for this Agent, a 404 is returned.

curl \
--header 'x-api-key: apg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--url https://my.gospel.bot/api/v1/conversations/conv-123

Response #

{
    "data": { /* conversation object */ }
}

Conversation Object #

FieldTypeDescription
idstring (UUID)Internal conversation identifier
external_idstring | nullYour conversation identifier (matches metadata.conversation on completions)
agent_idintegerAgent that owns the conversation
team_idintegerTeam that owns the conversation
tagsarray | nullApplied tag ids when present
started_atstringUTC timestamp when the conversation started
ended_atstring | nullUTC timestamp when the conversation ended, if any
agent_pausedbooleanWhether the Agent is currently paused on this conversation
agent_paused_atstring | nullUTC timestamp of the current pause (null when not paused)
agent_resumed_atstring | nullUTC timestamp of the most recent resume (null while paused or never resumed)

Pause and Resume the Agent #

When the Agent is paused on a conversation, subsequent chat completions for that conversation (identified via metadata.conversation) skip LLM generation and responder routing. Opted-in prompt guardrails, CTAs, and automations can still run and return content; channel delivery skips sending when there is no guardrail/CTA payload to show.

Pause and resume also return the updated conversation object. Both accept the conversation’s UUID or external_id in the path.

Pause #

Use POST /api/v1/conversations/{id}/pause (no request body required):

curl \
--request POST \
--header 'x-api-key: apg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--url https://my.gospel.bot/api/v1/conversations/conv-123/pause

On success, agent_paused is true, agent_paused_at is set, and agent_resumed_at is cleared. If the path uses an external_id that does not yet exist for this Agent, a conversation row may be created and then paused. Unknown internal UUIDs return 404. An external_id already owned by another Agent on the same team returns 404.

Resume #

Use POST /api/v1/conversations/{id}/resume (no request body required):

curl \
--request POST \
--header 'x-api-key: apg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--url https://my.gospel.bot/api/v1/conversations/conv-123/resume

On success, agent_paused is false, agent_resumed_at is set, and agent_paused_at is cleared. The conversation must already exist for this Agent; otherwise a 404 is returned.

Response #

{
    "data": {
        "id": "11111111-1111-1111-1111-111111111111",
        "external_id": "conv-123",
        "agent_id": 7,
        "team_id": 3,
        "tags": null,
        "started_at": "2026-07-22 12:00:00",
        "ended_at": null,
        "agent_paused": true,
        "agent_paused_at": "2026-07-22 15:30:00",
        "agent_resumed_at": null
    }
}

CTAs, guardrails, and automations configured in Apologist Ignite can also pause or resume the Agent when they fire (pause_agent / resume_agent on the trigger). Some triggers may be configured to continue running while the Agent is paused (run_while_agent_paused).

Error Responses #

StatusMeaning
403Missing or invalid API key
404Conversation not found for this Agent
500Internal server error
503Agent not found or inactive for the request’s host