openapi: 3.0.1 info: title: Coval Agents Personas API description: Simulation and evaluation API for AI voice and chat agents. Manage agents, test sets and test cases, personas, metrics and their thresholds and baselines, simulation runs, run templates, scheduled runs, individual simulations, reports, and production conversations. All paths are relative to the production base URL https://api.coval.dev/v1 and authenticated with the X-API-Key header. Endpoints in this document are drawn from Coval's live per-resource OpenAPI specifications served from https://api.coval.dev/v1/openapi. termsOfService: https://coval.dev/terms contact: name: Coval API Support email: support@coval.dev url: https://docs.coval.dev license: name: Proprietary url: https://coval.dev/terms version: 1.0.0 servers: - url: https://api.coval.dev/v1 description: Production API security: - ApiKeyAuth: [] tags: - name: Personas description: Configure simulated callers, voices, and scenario behavior. paths: /personas: get: operationId: listPersonas summary: List personas tags: - Personas parameters: - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Cursor' responses: '200': description: A list of personas. post: operationId: createPersona summary: Create persona tags: - Personas requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PersonaCreate' responses: '201': description: Persona created. /personas/phone-numbers: get: operationId: listPersonasPhoneNumbers summary: List phone number mappings tags: - Personas responses: '200': description: A list of phone number mappings. /personas/voices: get: operationId: listPersonasVoices summary: List available voices tags: - Personas responses: '200': description: A list of available voices. /personas/{persona_id}: parameters: - $ref: '#/components/parameters/PersonaId' get: operationId: getPersona summary: Get persona tags: - Personas responses: '200': description: The requested persona. patch: operationId: updatePersona summary: Update persona tags: - Personas requestBody: required: true content: application/json: schema: type: object responses: '200': description: Updated persona. delete: operationId: deletePersona summary: Delete persona tags: - Personas responses: '204': description: Persona deleted. components: schemas: PersonaCreate: type: object required: - name - voice_name - language_code properties: name: type: string persona_prompt: type: string voice_name: type: string language_code: type: string background_sound: type: string enum: - 'off' - office - lounge - crowd - airport - bus - playground - doorbell - train-arrival - portable-air-conditioner - skatepark - small-dog-bark - cafe - ferry-and-announcement - heavy-rain - moderate-wind - newborn-baby-crying - office-with-alarm - street-with-sirens - construction-work background_sound_volume: type: number voice_volume: type: number voice_speed: type: number wait_seconds: type: number conversation_initiation: type: string enum: - speak_first - wait_for_user multi_language_stt: type: boolean hold_music_timeout_seconds: type: number tags: type: array items: type: string parameters: Cursor: name: cursor in: query description: Pagination cursor. schema: type: string PersonaId: name: persona_id in: path required: true schema: type: string Limit: name: limit in: query description: Maximum number of items to return. schema: type: integer securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-API-Key description: Organization API key for authentication.