---
title: "Create a batch of test calls (developer API)"
method: POST
path: "/api/v1/developer/calls/batch"
tags: ["Developer API"]
---

# Create a batch of test calls (developer API)

`POST /api/v1/developer/calls/batch`

## Request

- Base URL: `https://dev.noveum.ai`
- URL: `https://dev.noveum.ai/api/v1/developer/calls/batch`
- Auth: API key in cookie `apiKeyCookie` and HTTP bearer

Creates inline personas, scenarios and calls in one request. Inbound batches arm only the first call; poll inbound.statusUrl until ready, finish it, then use claimNextUrl to arm the next call. Voice mode only.

## Request body

- object
  - `projectId` string: An existing project in the connected organization. Defaults to the Developer API project.
  - `direction` 'outbound' | 'inbound': Inbound reserves a Noveum number for the caller; outbound dials the endpoint.
  - `endpoint` union, required
    - object
      - `type` string, required
      - `phoneNumber` string, required
      - `phoneCountryCode` string, required
    - object
      - `type` string, required
      - `livekitUrl` string, uri, required
      - `livekitApiKey` string, required
      - `livekitApiSecret` string, required
      - `livekitAgentName` string, required
    - object
      - `type` string, required
      - `websocketUrl` string, uri, required
      - `websocketAuthHeader` string
    - object
      - `type` string, required
      - `retellApiKey` string, required
      - `retellAgentId` string
    - object
      - `type` string, required
      - `vapiApiKey` string, required
      - `vapiAssistantId` string
    - object
      - `type` string, required
      - `pipecatApiKey` string, required
      - `pipecatAgentName` string, required
      - `pipecatAgentConfigJson` object
    - object
      - `type` string, required
      - `elevenLabsApiKey` string, required
      - `elevenLabsAgentId` string
    - object
      - `type` string, required
      - `endpointId` string, required
  - `calls` object[], required
    - `persona` object, required
      - `name` string, required
      - `description` string
      - `goal` string, required
      - `personalityTraits` string[]
      - `tonePreference` string
      - `primaryLanguage` string[]
      - `understandsLanguages` string[]
      - `knowledgeBase` string[]
      - `occupation` string
      - `location` string
      - `educationLevel` string
      - `gender` string
      - `ttsVoiceModel` unknown
      - `ttsVoiceId` string
      - `speakingSpeed` number
      - `interruptionLevel` number
      - `backgroundNoise` unknown
      - `backgroundNoiseLevel` number
      - `backgroundNoiseDuration` number
      - `backgroundNoiseMode` 'mix_tts' | 'ambient'
      - `networkPacketLoss` number
      - `accentDescription` string
      - `maxDurationS` integer
    - `scenario` object, required
      - `name` string, required
      - `description` string, required
      - `events` object[]
        - `id` string, required
        - `parent_id` unknown
        - `action` string, required
        - `condition` unknown
      - `metadata` object
      - `tags` string[]
      - `scenarioType` 'conversation' | 'workflow' | 'red_team' | 'knowledge_base' | 'edge_case'
      - `folder` string
      - `libraryCategory` string
      - `categoryId` unknown
      - `interruptionLevel` number
      - `interruptions` object[]
        - `type` 're_explain' | 'hold_on' | 'third_party_aside' | 'hurry_up' | 'bad_audio' | 'not_interested' | 'clarification' | 'correction' | 'premature_answer', required
        - `marker_turn` integer, required
        - `intent` unknown
        - `opener` unknown
        - `after_event_id` unknown
        - `gate` union
          - object
            - `type` string, required
          - object
            - `type` string, required
        - `window_turns` integer
        - `on_miss` 'fire_late' | 'skip_and_log'
      - `projectId` string
      - `isPublic` boolean
  - `eval` boolean
  - `mode` 'voice' | 'text'
  - `maxCallDurationS` integer
  - `concurrencyLimit` integer
  - `webhook` string, uri
  - `serviceVersion` string

## Response `200`

Success

- object

## Other responses

- `201`: Created
- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict
- `422`: Unprocessable entity
- `500`: Internal server error

---

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