# List calls made with Sinch Voice API

List and filter calls made with Sinch

Endpoint: GET /v2/projects/{projectId}/calls
Version: 2.0.58
Security: BasicAuth, SinchOAuth2

## Path parameters:

  - `projectId` (string, required)
    The ID of the project.

## Query parameters:

  - `serviceId` (string)
    The ID of the service.

  - `from` (string)
    Only include calls where from matches this origin.  For inbound calls, this is the caller; for outbound calls, this is the calling party.
    Example: "+15551234567"

  - `to` (string)
    Only include calls where to matches this destination. For inbound calls, this is the called party; for outbound calls, this is the callee/recipient.
    Example: "+15551234568"

  - `callType` (string)
    Only include calls of the specified type.

If omitted, calls of all types are included.
    Enum: "PHONE", "SIP", "STREAM", "VOICE_RELAY"

  - `startTime` (string)
    Only include calls that started at or after startTime.

Use a more precise timestamp to narrow the results. For example:
- 2025-02-01 matches calls starting from 2025-02-01T00:00:00Z
- 2025-02-01T14:00:00Z matches calls starting from 14:00:00Z on 2025-02-01
    Example: "2025-02-01T14:00:00Z"

  - `endTime` (string)
    Only include calls that ended before endTime (exclusive).

Use a more precise timestamp to narrow the results. For example:
- 2025-03-01 matches calls ending up to 2025-03-01T00:00:00Z
- 2025-03-01T14:00:00Z matches calls ending up to 14:00:00Z on 2025-03-01
    Example: "2025-03-01T14:00:00Z"

  - `callResult` (string)
    Filter results to only include calls whose callResult matches the specified value.

If omitted, calls with any result are included.
    Enum: "QUEUED", "INITIATED", "IN_PROGRESS", "COMPLETED", "REJECTED", "NO_ANSWER", "CANCEL", "BUSY", "FAILED"

  - `callReason` (string)
    Filter results to only include calls whose callReason matches the specified value.

If omitted, calls with any reason are included.
    Enum: "OK", "NOT_AVAILABLE", "CALLER_HANGUP", "CALLEE_HANGUP", "MANAGER_HANGUP", "DID_NOT_FOUND", "INVALID_SCRIPT", "UNKNOWN_PRODUCT", "NO_MORE_ROUTES", "ERROR"

  - `pageSize` (integer)
    Number of items to be returned on each page.

  - `page` (integer)
    Page number (1-based)

## Response 200 fields (application/json):

  - `calls` (array, required)
    Array of call resources

  - `calls.callId` (string, required)
    The Id` of the call.

  - `calls.projectId` (string, required)
    The Id of the project associated with the call.

  - `calls.serviceId` (string, required)
    The ID of the service used.

  - `calls.sessionId` (string, required)
    The ID of the session.

  - `calls.direction` (string, required)
    Indicates the direction of the call.
    Enum: "INBOUND", "OUTBOUND"

  - `calls.originationType` (string, required)
    Indicates the origin/source of the call.

This describes how the call was initiated (PSTN or via the API).
    Enum: "PHONE", "SIP", "SERVER"

  - `calls.callType` (string, required)
    The type of channel used for the call.

This value indicates what kind of endpoint the call is connected to (PSTN phone number or WebSocket stream).
    Enum: same as `callType` (4 values)

  - `calls.callResult` (string, required)
    The outcome/state of the call.

This field includes both transitional states (during call setup and execution) and final states (when the call has ended).
    Enum: same as `callResult` (9 values)

  - `calls.startTime` (string, required)
    Timestamp (RFC 3339) indicating when the call was created and call setup was initiated (start of the call attempt).
    Example: "2025-01-01 00:00:00+00:00"

  - `calls.callRate` (object, required)
    The rate charged for this call, expressed as a monetary amount per minute in the specified currency.

  - `calls.callRate.currencyCode` (string, required)
    The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html).
    Example: "USD"

  - `calls.callRate.amount` (string, required)
    The monetary amount as a string to preserve precision. Supports up to 4 decimal places (e.g., "10.5000", "0.9999").
    Example: "0.0123"

  - `calls.callResourceUrl` (string, required)
    Absolute URI to this call resource. Use this URL to retrieve the call details
    Example: "https://voice.api.sinch.com/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01AN4Z07BY79KA1307SR9X4MV3"

  - `calls.bridgeName` (string)
    The name of the bridge the call belongs to. Omitted for calls not assigned to any bridge.
    Example: "my-bridge"

  - `calls.batchId` (string)
    The ID of the batch.

  - `calls.from` (any) — one of (discriminator: type):
    Call origin - Phone Number or SIP endpoint
    - PHONE:
      - `type` (string, required)
        Routes the call to a phone number on the Public Switched Telephone Network (PSTN). The number must be in E.164 format.
      - `phone` (object, required)
      - `phone.number` (string, required)
        E.164 Phone number
    - SIP:
      - `type` (string, required)
        Indicates the call originated from a SIP (Session Initiation Protocol) endpoint.
      - `sip` (object, required)
      - `sip.endpoint` (string, required)
        SIP URI of the originating endpoint. Both sip: (unencrypted) and sips: (TLS-encrypted) schemes are supported.
      - `sip.displayName` (string)
        Display name presented to the called party as the caller identity. Transmitted as the display name part of the SIP From header (for example, Alice ).
        Example: "Alice"

  - `calls.to` (any) — one of (discriminator: type):
    Call destination - Phone Number or Stream URI
    - PHONE:
      - `type` (string, required)
        Routes the call to a phone number on the Public Switched Telephone Network (PSTN). The number must be in E.164 format.
      - `phone` (object, required)
      - `phone.number` (string, required)
        E.164 Phone number
    - SIP:
      - `type` (string, required)
        Routes the call to a SIP (Session Initiation Protocol) endpoint.
      - `sip` (object, required)
      - `sip.endpoint` (string, required)
        SIP URI of the destination endpoint. Both sip: (unencrypted) and sips: (TLS-encrypted) schemes are supported.
      - `sip.transport` (string)
        Transport protocol to use for the SIP signalling channel.

If omitted, the platform selects a default based on the URI scheme: UDP for sip: and TLS for sips:. Setting this explicitly overrides that default — for example, to force TCP for a sip: URI or to use TLS without switching to the sips: scheme.
        Enum: "UDP", "TCP", "TLS"
      - `sip.callHeaders` (array)
        Custom SIP headers to be sent in the call setup.
      - `sip.callHeaders.key` (string, required)
        Name of the SIP header.
        Example: "X-Correlation-Id"
      - `sip.callHeaders.value` (string)
        Value of the SIP header.
        Example: "12345"
    - STREAM:
      - `type` (string, required)
        Routes the call to a WebSocket stream endpoint for real-time audio processing.
      - `stream` (object, required)
      - `stream.endpoint` (string, required)
        WebSocket endpoint that will accept the incoming connection for real-time audio streaming. Must be a valid WebSocket URL using either ws:// or wss:// (recommended). The URL must be reachable from the public internet and capable of handling the negotiated stream protocol.
        Example: "wss://example.com"
      - `stream.streamOptions` (object)
      - `stream.streamOptions.version` (integer)
        Defines the version of the stream protocol.
        Example: 1
      - `stream.streamOptions.codec` (string)
        Defines the audio codec/format used for the stream audio payload.

Currently, only PCM is supported (uncompressed raw audio). Use sampleRate to configure the sampling rate for the stream.
      - `stream.streamOptions.sampleRate` (integer)
        Defines the audio sampling rate (Hz) used for the stream.

For calls that traverse the PSTN, audio is typically sampled at 8 kHz, so using a higher value will not improve perceived quality. 
Higher sample rates can be useful for non-PSTN scenarios (for example, SIP/streaming paths), but will increase bandwidth usage and processing load.
        Enum: 8000, 16000, 24000, 44100, 48000, 96000
      - `stream.callHeaders` (array)
        Custom headers to be sent in the call setup.
      - `stream.callHeaders.key` (string, required)
        Name of the header.
        Example: "headerKey"
      - `stream.callHeaders.value` (string)
        Value of the header.
        Example: "headerValue"
    - VOICE_RELAY:
      - `type` (string, required)
        Connects to the Voice Relay service to enable STT and TTS services...
      - `voiceRelay` (object, required)
      - `voiceRelay.endpoint` (string, required)
        URL to the server that will accept the web-socket request
        Example: "wss://acme.com/agent"
      - `voiceRelay.ttsVoice` (string, required)
        Name of the voice to be used when synthesizing speech. 

This is the default voice used, if no override voice is provided in the web-socket TTS message.

Supported voices include: Emma, Brian, and others. For a complete list of available voices and their characteristics, see the [Text-to-Speech Voices documentation](/docs/voice/api-reference/text-to-speech-voices).
        Example: "Emma"
      - `voiceRelay.sttLanguage` (string, required)
        BCP-47 language tag used for speech-to-text transcription of the inbound audio.

This value determines which language model is used for transcription.
        Example: "en-US"
      - `voiceRelay.enableInterruptions` (boolean)
        Allow "barge-in" during text-to-speech (TTS) playback.

When true, TTS playback is interrupted as soon as inbound speech is detected, unless the currently playing content is marked as uninterruptible.

When false, TTS playback continues uninterrupted, but an interruption signal is still sent over the WebSocket so the client application can choose to stop playback manually if needed.
        Example: true
      - `voiceRelay.callHeaders` (array)
        Custom headers to be sent in the call setup.
      - `voiceRelay.callHeaders.key` (string, required)
        Name of the header.
        Example: "headerKey"
      - `voiceRelay.callHeaders.value` (string)
        Value of the header.
        Example: "headerValue"

  - `calls.updateTime` (string)
    Timestamp (RFC 3339) indicating when the call was last updated.

Omitted if no updates were performed on this call.
    Example: "2025-01-01 00:00:00+00:00"

  - `calls.answerTime` (string)
    Timestamp (RFC 3339) indicating when the call was answered.

Omitted if the call was not answered.
    Example: "2025-01-01 00:00:00+00:00"

  - `calls.endTime` (string)
    Timestamp (RFC 3339) indicating when the call ended.

Omitted for ongoing calls.
    Example: "2025-01-01 00:00:00+00:00"

  - `calls.callDurationSeconds` (integer)
    Duration of the call in seconds
    Example: 42

  - `calls.callReason` (string)
    Reason explaining why the call ended in the given callResult.

callResult describes what happened (state/outcome). callReason provides additional context about the
underlying cause (for example, who terminated the call, routing issues, or validation errors).
    Enum: same as `callReason` (10 values)

  - `links` (object, required)
    Pagination links for navigating through pages of results in a paginated list response.

Available link properties:
- first - Absolute URI of the first page
- last - Absolute URI of the last page
- next - Absolute URI of the next page (omitted if this is the last page)
- prev - Absolute URI of the previous page (omitted if this is the first page)
- self - Absolute URI of the current page

  - `links.first` (string, required)
    Absolute URI of the first page.
    Example: "https://voice.api.sinch.com/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls?page=1&pageSize=20"

  - `links.last` (string, required)
    Absolute URI of the last page.
    Example: "https://voice.api.sinch.com/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls?page=5&pageSize=20"

  - `links.self` (string, required)
    Absolute URI of the current page.
    Example: "https://voice.api.sinch.com/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls?page=2&pageSize=20"

  - `links.next` (string)
    Absolute URI of the next page (omitted if this is the last page).
    Example: "https://voice.api.sinch.com/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls?page=3&pageSize=20"

  - `links.prev` (string)
    Absolute URI of the previous page (omitted if this is the first page).
    Example: "https://voice.api.sinch.com/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls?page=1&pageSize=20"

  - `meta` (object, required)
    Metadata about the paginated list response.

  - `meta.totalCount` (integer, required)
    Total number of items across all pages.
    Example: 100

  - `meta.pageCount` (integer, required)
    Total number of pages.
    Example: 5

## Response 400 fields (application/problem+json):

  - `type` (string, required)
    URI that identifies the problem type and links to the corresponding error documentation.

  - `title` (string, required)
    Human-readable short summary of the problem type.

  - `detail` (string, required)
    Human-readable explanation of the specific problem occurrence.
    Example: "The request body is invalid or malformed."

  - `instance` (string, required)
    URI reference that identifies the specific occurrence of the problem (typically the request path).
    Example: "/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA"

## Response 401 fields (application/problem+json):

  - `type` (string, required)
    URI that identifies the problem type and links to the corresponding error documentation.

  - `title` (string, required)
    Human-readable short summary of the problem type.

  - `detail` (string, required)
    Human-readable explanation of the specific problem occurrence.
    Example: "The token is missing, invalid, or has expired."

  - `instance` (string, required)
    URI reference that identifies the specific occurrence of the problem (typically the request path).
    Example: "/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA"

## Response 403 fields (application/problem+json):

  - `type` (string, required)
    URI that identifies the problem type and links to the corresponding error documentation.

  - `title` (string, required)
    Human-readable short summary of the problem type.

  - `detail` (string, required)
    Human-readable explanation of the specific problem occurrence.
    Example: "The request was rejected."

  - `instance` (string, required)
    URI reference that identifies the specific occurrence of the problem (typically the request path).
    Example: "/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA"

## Response 404 fields (application/problem+json):

  - `type` (string, required)
    URI that identifies the problem type and links to the corresponding error documentation.

  - `title` (string, required)
    Human-readable short summary of the problem type.

  - `detail` (string, required)
    Human-readable explanation of the specific problem occurrence.
    Example: "The requested resource was not found."

  - `instance` (string, required)
    URI reference that identifies the specific occurrence of the problem (typically the request path).
    Example: "/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA"

## Response 429 fields (application/problem+json):

  - `type` (string, required)
    URI that identifies the problem type and links to the corresponding error documentation.

  - `title` (string, required)
    Human-readable short summary of the problem type.

  - `detail` (string, required)
    Human-readable explanation of the specific problem occurrence.
    Example: "Rate limit exceeded. Please slow down your request rate and retry after the indicated period."

  - `instance` (string, required)
    URI reference that identifies the specific occurrence of the problem (typically the request path).
    Example: "/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls"

## Response 500 fields (application/problem+json):

  - `type` (string, required)
    URI that identifies the problem type and links to the corresponding error documentation.

  - `title` (string, required)
    Human-readable short summary of the problem type.

  - `detail` (string, required)
    Human-readable explanation of the specific problem occurrence.
    Example: "An unexpected error occurred on the server."

  - `instance` (string, required)
    URI reference that identifies the specific occurrence of the problem (typically the request path).
    Example: "/v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA"


