> This page is for Referencia de la API.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://signalcore.ai/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://signalcore.ai/docs/_mcp/server.

# Get

GET https://signalcore.ai/v1/conversations/{conversation_id}

Reference: https://signalcore.ai/docs/referencia/conversaciones/get

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `conversation_id` (string, required)

## Response

### 200

Successful Response

- `id` (string, required)
- `agent_id` (string, required)
- `trigger_id` (string, required, nullable)
- `handled_by` (enum, required)
  - Allowed values: `agent`, `person`, `nobody`
- `pending` (boolean, required)
- `test` (boolean, required)
- `created_at` (datetime, required)
- `messages` (list of MessageOut, required)
- `run_id` (string, optional, nullable)
- `handover` (HandoverOut, optional, nullable) — A change of who answers a conversation: to whom, why, who set it and when.
- `title` (string, optional, nullable)
- `channel` (ChannelGlance, optional, nullable) — The channel a conversation is on, as a list draws it.
- `contact` (ContactGlance, optional, nullable) — The person a conversation on a channel is with, or a person of a host's page (on no channel).
- `reply_due_at` (datetime, optional, nullable)
- `last_inbound_at` (datetime, optional, nullable)
- `call` (CallGlance, optional, nullable) — The call a conversation is (VOICE.md): the owner's in the browser or a phone call, when the worker took it and when it ended, why and how long.
- `person` (PersonOut, optional, nullable) — Who a conversation is with (`people`).
- `handovers` (list of HandoverOut, optional, default: [])

## Errors

### 422 Conversations Get Request Unprocessable Entity Error

Validation Error

- `detail` (list of ValidationError, optional)

## Types

### MessageOut

- `id` (string, required)
- `role` (enum, required)
  - Allowed values: `user`, `assistant`
- `text` (string, required)
- `action` (map from string to any, required, nullable)
- `steps` (list of StepOut, required)
- `created_at` (datetime, required)
- `files` (list of FileRef, optional, default: [])
- `author` (enum, optional, nullable)
  - Allowed values: `contact`, `agent`, `operator`
- `delivery` (enum, optional, nullable)
  - Allowed values: `queued`, `sent`, `delivered`, `read`, `failed`
- `delivery_error` (string, optional, nullable)
- `pieces` (list of string, optional, nullable)
- `sent_parts` (integer, optional, nullable)
- `voice` (FileRef, optional, nullable) — A file of the conversation as a message shows it; its bytes are at `GET /conversations/{id}/files/{file_id}`.
- `heard` (string, optional, nullable)
- `decision` (AppSchemasDecisionOut, optional, nullable) — What was decided of a contact's message (`handlers`): by the channel's filter, the agent answers it or not this time (`skip`); by the agent's own handlers (`@sc.on`), it answers, or the conversation goes to a person (`hold`) or to nobody (`ignore`); `deciding` while they go.

### HandoverOut

A change of who answers a conversation: to whom, why, who set it and when.

- `holder` (enum, required)
  - Allowed values: `agent`, `person`, `nobody`
- `reason` (string, required)
- `by` (string, required)
- `title` (string, required, nullable)
- `at` (datetime, required)

### ChannelGlance

The channel a conversation is on, as a list draws it.

- `id` (string, required)
- `kind` (string, required)
- `name` (string, required)

### ContactGlance

The person a conversation on a channel is with, or a person of a host's page (on no channel).

- `id` (string, required)
- `name` (string, required, nullable)
- `address` (string, required)
- `muted` (boolean, optional, default: false)

### CallGlance

The call a conversation is (VOICE.md): the owner's in the browser or a phone call, when the worker took it and when it ended, why and how long.

- `id` (string, required)
- `kind` (enum, required)
  - Allowed values: `browser`, `phone`
- `reason` (string, required, nullable)
- `seconds` (integer, required, nullable)
- `started_at` (datetime, required, nullable)
- `ended_at` (datetime, required, nullable)
- `recording` (boolean, optional, default: false)

### PersonOut

Who a conversation is with (`people`).

- `kind` (enum, required)
  - Allowed values: `host_person`, `visitor`, `contact`, `owner`
- `external_id` (string, required)
- `name` (string, required, nullable)
- `email` (string, required, nullable)

### ValidationError

- `loc` (list of ValidationErrorLocItem, required)
- `msg` (string, required)
- `type` (string, required)
- `input` (any, optional)
- `ctx` (map from string to any, optional)

### StepOut

An action a reply called: what, how it went, and what it drew.

- `id` (string, required)
- `action` (string, required)
- `state` (enum, required)
  - Allowed values: `running`, `waiting`, `done`, `failed`
- `output` (string, required, nullable)
- `surface` (map from string to any, required, nullable)
- `awaits` (boolean, required)
- `request` (map from string to any, required, nullable)
- `app` (StepApp, optional, nullable) — The connected app an action belongs to, as its step shows it: its name and its logo (an https address; none when the provider has none).

### FileRef

A file of the conversation as a message shows it; its bytes are at `GET /conversations/{id}/files/{file_id}`.

- `id` (string, required)
- `name` (string, required)
- `media_type` (string, required)
- `size` (integer, required)

### AppSchemasDecisionOut

What was decided of a contact's message (`handlers`): by the channel's filter, the agent answers it or not this time (`skip`); by the agent's own handlers (`@sc.on`), it answers, or the conversation goes to a person (`hold`) or to nobody (`ignore`); `deciding` while they go.

- `kind` (enum, required)
  - Allowed values: `deciding`, `answer`, `skip`, `hold`, `ignore`
- `reason` (string, required, nullable)
- `automation` (string, required, nullable)
- `title` (string, required, nullable)
- `run_id` (string, required, nullable)

### ValidationErrorLocItem

### StepApp

The connected app an action belongs to, as its step shows it: its name and its logo (an https address; none when the provider has none).

- `name` (string, required)
- `icon` (string, optional, nullable)

## Examples

**Response**

```json
{
  "id": "id",
  "agent_id": "agent_id",
  "trigger_id": "trigger_id",
  "handled_by": "agent",
  "pending": true,
  "test": true,
  "created_at": "2024-01-15T09:30:00Z",
  "messages": [
    {
      "id": "id",
      "role": "user",
      "text": "text",
      "action": {
        "key": "value"
      },
      "steps": [
        {
          "id": "id",
          "action": "action",
          "state": "running",
          "output": null,
          "surface": null,
          "awaits": true,
          "request": null
        }
      ],
      "created_at": "2024-01-15T09:30:00Z",
      "files": [
        {
          "id": "id",
          "name": "name",
          "media_type": "media_type",
          "size": 1
        }
      ],
      "author": "contact",
      "delivery": "queued",
      "delivery_error": "delivery_error",
      "pieces": [
        "pieces"
      ],
      "sent_parts": 1,
      "voice": {
        "id": "id",
        "name": "name",
        "media_type": "media_type",
        "size": 1
      },
      "heard": "heard",
      "decision": {
        "kind": "deciding",
        "reason": null,
        "automation": null,
        "title": null,
        "run_id": null
      }
    }
  ],
  "run_id": "run_id",
  "handover": {
    "holder": "agent",
    "reason": "reason",
    "by": "by",
    "title": "title",
    "at": "2024-01-15T09:30:00Z"
  },
  "title": "title",
  "channel": {
    "id": "id",
    "kind": "kind",
    "name": "name"
  },
  "contact": {
    "id": "id",
    "name": "name",
    "address": "address",
    "muted": true
  },
  "reply_due_at": "2024-01-15T09:30:00Z",
  "last_inbound_at": "2024-01-15T09:30:00Z",
  "call": {
    "id": "id",
    "kind": "browser",
    "reason": "reason",
    "seconds": 1,
    "started_at": "2024-01-15T09:30:00Z",
    "ended_at": "2024-01-15T09:30:00Z",
    "recording": true
  },
  "person": {
    "kind": "host_person",
    "external_id": "external_id",
    "name": "name",
    "email": "email"
  },
  "handovers": [
    {
      "holder": "agent",
      "reason": "reason",
      "by": "by",
      "title": "title",
      "at": "2024-01-15T09:30:00Z"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://signalcore.ai/v1/conversations/conversation_id"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```