> 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.

# Start

POST https://signalcore.ai/v1/agents/{agent_id}/conversations
Content-Type: application/json

A new conversation with the agent; `{"test": true}` for the owner's test of it. A person
starts theirs, recorded as theirs.

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

## Authentication

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

## Request

### Path parameters

- `agent_id` (string, required)

### Body (application/json)

This endpoint expects a ConversationIn.

- `test` (boolean, optional, default: false)

## Response

### 201

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)
- `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`).

## Errors

### 422 Conversations Start Request Unprocessable Entity Error

Validation Error

- `detail` (list of ValidationError, optional)

## Types

### 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)

### ValidationErrorLocItem

## Examples

**Request**

```json
{}
```

**Response**

```json
{
  "id": "cnv_01M4XZ3B7C9D1E4F6G8H0J2K4M",
  "agent_id": "agt_01M4XYHF1AN7PC3HQSX1B6G135",
  "trigger_id": null,
  "handled_by": "agent",
  "pending": false,
  "test": false,
  "created_at": "2026-10-17T09:31:00Z",
  "run_id": null,
  "handover": null,
  "title": null,
  "channel": null,
  "contact": null,
  "reply_due_at": null,
  "last_inbound_at": null,
  "call": null,
  "person": null
}
```

**SDK Code**

```python Empezar una conversación
import requests

url = "https://signalcore.ai/v1/agents/agt_01M4XYHF1AN7PC3HQSX1B6G135/conversations"

payload = {}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```