Skip to main content
POST
/
api
/
v1
/
call
/
create
curl -X POST 'https://app.reddy.io/api/v1/call/create' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "agent_email": "[email protected]",
    "product_id": 123,
    "transcript": [
      {
        "role": "agent",
        "text": "Hello, how can I help you today?",
        "start": 5,
        "stop": 36
      },
      {
        "role": "customer",
        "text": "I need help with my recent order",
        "start": 54,
        "stop": 67
      }
    ]
  }'
{
  "upload_id": 12345,
  "conversation_id": "conv_123",
  "upload_url": "https://app.reddy.io/api/v1/internal/uploads/token",
  "expires_in": 3600
}
Check out our Send Calls to Reddy guide for examples of using this endpoint.
This endpoint is used to add a call to Reddy and perform the QA grading process on it. QA grading can be triggered by either uploading an audio file or providing a transcript.
Calls are added to a processing queue and may not show up in the dashboard immediately. Processing times vary based on current queue load.
Once the process is completed, the insights will be visible on the dashboard. The filename parameter is optional. If provided, the response will include an upload URL for the audio file. If omitted, a simple success response is returned.
Redaction is not applied to the audio if the transcript is provided. If you have sensitive information in the audio that you want to silence, make sure you do that using word-level timestamps in your transcription before sending to Reddy.

Speaker Separation

Control how speakers are separated in the call using the speaker object:
  • speaker.separation: ‘diarize’ (default) or ‘channels’
  • speaker.channel_map (optional, when separation=“channels”): [“agent”, “customer”] or [“customer”, “agent”]. If omitted, roles are identified automatically.
Learn more about speaker separation
curl -X POST 'https://app.reddy.io/api/v1/call/create' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "agent_email": "[email protected]",
    "product_id": 123,
    "transcript": [
      {
        "role": "agent",
        "text": "Hello, how can I help you today?",
        "start": 5,
        "stop": 36
      },
      {
        "role": "customer",
        "text": "I need help with my recent order",
        "start": 54,
        "stop": 67
      }
    ]
  }'
{
  "upload_id": 12345,
  "conversation_id": "conv_123",
  "upload_url": "https://app.reddy.io/api/v1/internal/uploads/token",
  "expires_in": 3600
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
agent_email
string
required

Email address of the agent handling the call

product_id
integer
required

Product id associated with the call

filename
string | null

Name of the audio file to be uploaded. Optional - if not provided, no upload URL will be returned.

channels
string[] | null

DEPRECATED: Use speaker.separation and speaker.channel_map instead. Mapping of the channels in the audio file to the customer and agent. If nothing is specified, speakers will be identified automatically with a speaker diarization model.

For example: ['customer', 'agent'] means the left channel contains the customer's audio and right channel contains the agent's audio.

speaker
Speaker · object

Configuration for speaker separation and channel mapping. If not provided, defaults to diarization.

transcript
TranscriptLine · object[] | null

Transcript of the call

tags
Tag · object[] | null

Array of tag objects containing key, value, and type

timestamp
number | null

Timestamp of the call start time in seconds since epoch format. If not set, defaults to the current time.

conversation_id
string | null

Unique identifier for the conversation

Response

OK

upload_id
integer
required

Unique identifier for the upload

conversation_id
string
required

Unique identifier for the conversation

upload_url
string
required

URL to upload the audio file

expires_in
integer
required

Time in seconds for which the upload URL is valid