---
title: "Create Public Outbound Call"
method: POST
path: "/public/v1/outbound-calls"
tags: ["outbound-calls"]
---

# Create Public Outbound Call

`POST /public/v1/outbound-calls`

## Request

- Base URL: `https://api.gurusup.com`
- URL: `https://api.gurusup.com/public/v1/outbound-calls`
- Auth: API key in header `x-api-key`

Request an outbound call using the authenticated organization's triage agent. Requires outbound voice enabled and configured outbound telephony. Repeat the same dedup_key to retrieve the same order, not place another call. 202 acknowledges the order, not connection to the recipient; poll GET for its status. reason: at most 2,000 characters; dedup_key: at most 200; language: at most 35. Oversized strings and unknown fields return 422. case_data is limited to 4,096 bytes of compact UTF-8 JSON (unescaped Unicode); exceeding that limit returns 400. Invalid requests do not create or enqueue a call.

## Request body

- CreatePublicOutboundCallRequest
  - `recipient_e164` string, required: Recipient phone number in E.164 format, e.g. +34600111222.
  - `reason` string, required: Purpose of the call. Maximum 2,000 characters.
  - `dedup_key` string, required: Non-blank idempotency key scoped to the organization. Maximum 200 characters.
  - `case_data` object: Initial case context. Maximum 4,096 bytes of compact UTF-8 JSON (unescaped Unicode).
  - `voicemail_context` VoicemailContext
    - `purpose` string, required
  - `language` string, nullable: Optional initial language, e.g. es or es-ES. Maximum 35 characters.

## Response `202`

Successful Response

- CreatePublicOutboundCallResponse
  - `order_id` string, required
  - `status` 'pending' | 'calling' | 'in_progress' | 'completed' | 'failed' | 'cancelled' | 'expired' | 'blocked' | 'unknown', required: pending: waiting to be processed (not a queue-delivery guarantee); calling: connecting; in_progress: phone connection active, human answer not yet confirmed; completed: call ended; failed: unsuccessful; cancelled: cancelled before calling; expired: validity elapsed; blocked: another unfinished order prevents this call; unknown: call outcome cannot yet be confirmed, do not automatically place another call.

## Other responses

- `400`: Invalid input, including case_data exceeding 4,096 bytes.
- `422`: Validation Error

---

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