---
title: "Place an outbound call"
method: POST
path: "/v1/calls"
tags: ["Calls", "Calls"]
---

# Place an outbound call

`POST /v1/calls`

## Request

- Base URL: `https://api.call2me.app`
- URL: `https://api.call2me.app/v1/calls`
- Auth: HTTP bearer

Initiate an outbound phone call. The platform will dial `to_number` from `from_number` (a phone number you own on this workspace), connect the configured AI agent, and begin a real-time voice conversation. The call is placed asynchronously — this endpoint returns immediately with `call_id` and `status='queued'`; poll `GET /v1/calls/{id}` or subscribe to webhooks to track progress.

**Required**: an active agent (`agent_id`) and a phone number assigned to your workspace (`from_number`). If `from_number` is omitted, the agent's assigned phone number is used automatically.

**Cost**: deducted from your wallet per minute of talk time. The request fails with `402` if balance is insufficient.

## Request body

- Call2meCoreModelsCallCreateCallRequest: Request to create an outbound call.
  - `agent_id` string, required: Agent to use for this call
  - `to_number` string, required: E.164 format phone number to call
  - `from_number` string, nullable: Caller ID (must be owned by account)
  - `topic` string, nullable: Why this call is being placed. Reaches the agent as `call_purpose` and is woven into both the opening line and the system prompt, so the agent states its reason instead of a generic greeting.
  - `metadata` object, nullable: Custom metadata for the call
  - `dynamic_variables` object, nullable: Dynamic variables to inject into prompts

## Response `201`

Call queued for dialing.

- Call: Complete call record.
  - `call_id` string, required: Unique call identifier
  - `agent_id` string, nullable: Agent used for this call (tercüman/köprü aramalarında yok)
  - `call_status` 'pending' | 'ringing' | 'in_progress' | 'completed' | 'failed' | 'no_answer' | 'busy' | 'transferred' | 'ended', required: Current call status
  - `call_type` 'inbound' | 'outbound' | 'sip_call' | 'web_call' | 'interpreter' | 'phone_call' | 'phone', required: Call direction type
  - `direction` 'inbound' | 'outbound' | 'web' | 'web_bridge', required: Call direction
  - `from_number` string, nullable: Caller phone number
  - `to_number` string, nullable: Callee phone number
  - `start_timestamp` integer, nullable: Unix timestamp in milliseconds when call started
  - `end_timestamp` integer, nullable: Unix timestamp in milliseconds when call ended
  - `duration_ms` integer, nullable: Call duration in milliseconds
  - `transcript` string, nullable: Full transcript as text
  - `transcript_object` TranscriptTurn[], nullable: Structured transcript
    - `role` 'agent' | 'user', required: Speaker role
    - `text` string, required: Spoken text (canlı veride `text` anahtarı)
    - `timestamp` string, nullable: ISO 8601 timestamp
  - `recording_url` string, nullable: URL to call recording
  - `disconnection_reason` string, nullable: Reason the call ended (sabit kod ya da ajanın açıklaması)
  - `call_analysis` CallAnalysis: Post-call analysis results.
    - `call_successful` boolean, required: Whether the call achieved its goal
    - `call_summary` string, required: AI-generated summary of the call
    - `user_sentiment` 'positive' | 'neutral' | 'negative', nullable: Overall user sentiment
    - `custom_analysis_data` object, nullable: Custom analysis results
  - `metadata` object, nullable: Custom metadata
  - `created_at` string, date-time: Record creation time
  - `updated_at` string, date-time: Last update time

## Other responses

- `400`: No phone number assigned, demo number used for outbound, or other validation error.
- `402`: Insufficient wallet balance.
- `404`: Agent not found.
- `422`: Validation Error

---

[API](https://skmtc.dev/call2me/apis/call2me-api.md) · [All operations](https://skmtc.dev/call2me/apis/call2me-api/llms.txt) · [OpenAPI document](https://skmtc.dev/call2me/apis/call2me-api/revisions/3951f9b7e47d?raw)
