> ## Documentation Index
> Fetch the complete documentation index at: https://platform-docs.sarj.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the public voice-call API at https://platform-api.sarj.ai/api/v1 and the sarj-platform-sdk Python client. Scenario IDs are dashboard UUIDs. Check the Python guide and PyPI for SDK capability and release availability. Bound result polling and handle permanently missing reports. Do not automatically retry immediate call creation after an ambiguous timeout. The docs MCP is read-only; the API MCP performs authenticated call actions. Read the public OpenAPI contract for exact fields and error types.

# Receive a call outcome

> Sarj POSTs this notification to the webhook URL configured in the dashboard. This describes your receiver, not an endpoint on the Sarj API. Acknowledge within 5 seconds after durably storing the event; deduplicate on call_id. payload.type selects complete or a not-completed outcome. complete identifies the started-call payload shape, including voicemail; inspect payload.call_data.status for the outcome. Authentication uses the optional stored credential/header configured for your webhook, not your Sarj API key.



## OpenAPI

````yaml /api-reference/openapi.json webhook callEnded
openapi: 3.1.0
info:
  title: Sarj.ai Developer API
  description: >
    Public API for programmatic access to the **Sarj.ai voice platform**.


    > [!TIP]

    > **New here?** Start with the [Getting Started
    guide](https://platform-docs.sarj.ai/getting-started)

    > to go from API key to first call in under 5 minutes.

    >

    > **Building with AI agents?** See the [MCP Server
    guide](https://platform-docs.sarj.ai/mcp-server)

    > to connect Claude Code, Cursor, or any MCP-compatible agent.


    ---


    ## Authentication


    All authenticated endpoints require a **Bearer token** in the
    `Authorization`

    header:


    ```

    Authorization: Bearer <your-api-key>

    ```


    Generate an API key from
    [platform.sarj.ai/api-keys](https://platform.sarj.ai/api-keys).


    > [!WARNING]

    > If you receive a `401 Unauthorized` response, your key may be invalid,

    > expired, or missing. Check the `error.type` field in the response body.


    ---


    ## Response Format


    **Success**


    ```json

    {
      "data": { ... },
      "meta": { "request_id": "550e8400-e29b-41d4-a716-446655440000" }
    }

    ```


    **Error**


    ```json

    {
      "error": {
        "type": "unauthorized",
        "message": "Authentication required."
      },
      "meta": { "request_id": "550e8400-e29b-41d4-a716-446655440000" }
    }

    ```


    Always branch on `error.type` — the `message` field is for humans only.


    ---


    ## Support


    Include `meta.request_id` in all support tickets for faster resolution.
  license:
    name: Apache 2.0
    identifier: Apache-2.0
  version: 1.1.0
servers:
  - url: https://platform-api.sarj.ai/api/v1
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: System
    description: Service health and status.
  - name: Calls
    description: Create outbound voice calls and retrieve call details and transcripts.
  - name: Schedule Configs
    description: Create and manage retry policies for scheduled outbound calls.
  - name: Webhooks
    description: Receive call outcomes at your configured endpoint.
externalDocs:
  description: Sarj.ai Documentation
  url: https://platform-docs.sarj.ai
paths: {}
components:
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        API key from your Sarj.ai dashboard. Pass as: Authorization: Bearer
        <api-key>

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.