Bluejay Digital Humans API
The Digital Humans API from Bluejay — 8 operation(s) for digital humans.
The Digital Humans API from Bluejay — 8 operation(s) for digital humans.
openapi: 3.1.0
info:
title: Bluejay Agents Digital Humans API
description: Bluejay API
version: 0.1.0
servers:
- url: https://api.getbluejay.ai
description: Production server
security:
- apiKeyAuth: []
tags:
- name: Digital Humans
paths:
/v1/create-digital-human:
post:
tags:
- Digital Humans
summary: Create Digital Human
description: Create a new digital human.
operationId: create_digital_human_v1_create_digital_human_post
security:
- HTTPBearer: []
parameters:
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDigitalHumanRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/digital-human/{digital_human_id}:
get:
tags:
- Digital Humans
summary: Get Digital Human
description: Get a digital human by ID.
operationId: get_digital_human_v1_digital_human__digital_human_id__get
security:
- HTTPBearer: []
parameters:
- name: digital_human_id
in: path
required: true
schema:
type: integer
title: Digital Human Id
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Digital Humans
summary: Delete Digital Human
description: Delete a digital human by ID.
operationId: delete_digital_human_v1_digital_human__digital_human_id__delete
security:
- HTTPBearer: []
parameters:
- name: digital_human_id
in: path
required: true
schema:
type: integer
title: Digital Human Id
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DigitalHumanResponseData'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/digital-humans-by-simulation/{simulation_id}:
get:
tags:
- Digital Humans
summary: Get Digital Humans By Simulation
description: Get digital humans by simulation ID.
operationId: get_digital_humans_by_simulation_v1_digital_humans_by_simulation__simulation_id__get
security:
- HTTPBearer: []
parameters:
- name: simulation_id
in: path
required: true
schema:
type: integer
title: Simulation Id
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DigitalHumansListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/update-digital-human/{digital_human_id}:
put:
tags:
- Digital Humans
summary: Update Digital Human
description: Update a digital human by ID.
operationId: update_digital_human_v1_update_digital_human__digital_human_id__put
security:
- HTTPBearer: []
parameters:
- name: digital_human_id
in: path
required: true
schema:
type: integer
title: Digital Human Id
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDigitalHumanRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/generate-objectives:
post:
tags:
- Digital Humans
summary: Generate Objectives Endpoint
description: Generate objectives for a test case from its intent.
operationId: generate_objectives_endpoint_v1_generate_objectives_post
security:
- HTTPBearer: []
parameters:
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateObjectivesRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateObjectivesResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/generate-intent-summary:
post:
tags:
- Digital Humans
summary: Generate Intent Summary Endpoint
description: Generate intent summary for a test case (only if intent exceeds character limit).
operationId: generate_intent_summary_endpoint_v1_generate_intent_summary_post
security:
- HTTPBearer: []
parameters:
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateIntentSummaryRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateIntentSummaryResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/generate-prompt-summary:
post:
tags:
- Digital Humans
summary: Generate Prompt Summary Endpoint
description: Generate prompt summary for a prompt (only if prompt exceeds character limit).
operationId: generate_prompt_summary_endpoint_v1_generate_prompt_summary_post
security:
- HTTPBearer: []
parameters:
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GeneratePromptSummaryRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GeneratePromptSummaryResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/generate-formatted-transcript:
post:
tags:
- Digital Humans
summary: Generate Formatted Transcript Endpoint
description: Take a raw transcript and return the structured transcript, derived utterances, and speaks_first.
operationId: generate_formatted_transcript_endpoint_v1_generate_formatted_transcript_post
security:
- HTTPBearer: []
parameters:
- name: X-API-Key
in: header
required: true
schema:
type: string
description: API key required to authenticate requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateFormattedTranscriptRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateFormattedTranscriptResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
VoiceSpeedType:
type: string
enum:
- slowest
- slow
- normal
- fast
- fastest
title: VoiceSpeedType
description: Enum for voice speed options.
GenderType:
type: string
enum:
- male
- female
title: GenderType
description: Enum for gender options.
src__models__digital_humans__digital_human_response__DigitalHumanResponse:
properties:
digital_human:
$ref: '#/components/schemas/DigitalHumanResponseData'
description: The digital human data
simulation_ids:
anyOf:
- items:
type: integer
type: array
- type: 'null'
title: Simulation Ids
description: List of simulation IDs associated with this digital human
simulation_id:
anyOf:
- type: integer
- type: 'null'
title: Simulation Id
description: ID of the associated simulation. Use simulation_ids instead.
deprecated: true
type: object
required:
- digital_human
title: DigitalHumanResponse
description: Response model for digital human operations with clear separation of digital human data and simulation context.
DigitalHumanResponseData:
properties:
id:
anyOf:
- type: integer
- type: 'null'
title: Id
description: Unique identifier for the digital human
intent:
type: string
title: Intent
description: Description of the digital human
success_criteria:
type: string
title: Success Criteria
description: Success criteria for the digital human
tag:
anyOf:
- type: string
- type: 'null'
title: Tag
description: Tag for categorizing the digital human
name:
anyOf:
- type: string
- type: 'null'
title: Name
description: Name of the digital human
language:
anyOf:
- $ref: '#/components/schemas/LanguageType'
- type: 'null'
description: Language of the digital human
accent:
anyOf:
- $ref: '#/components/schemas/AccentType'
- type: 'null'
description: Accent of the digital human
gender:
anyOf:
- $ref: '#/components/schemas/GenderType'
- type: 'null'
description: Gender of the digital human
background_noise:
anyOf:
- type: string
- type: 'null'
title: Background Noise
description: Type of background noise
voice_speed:
anyOf:
- type: string
- type: 'null'
title: Voice Speed
description: Speed of the digital human's voice
audio_quality:
anyOf:
- type: string
- type: 'null'
title: Audio Quality
description: Audio quality of the digital human's voice
fluency:
anyOf:
- type: string
- type: 'null'
title: Fluency
description: Fluency level of the digital human's speech
verbosity:
anyOf:
- type: string
- type: 'null'
title: Verbosity
description: Verbosity level of the digital human's responses
phone_number:
anyOf:
- type: string
- type: 'null'
title: Phone Number
description: Phone number for the digital human
outbound_text_number:
anyOf:
- type: string
- type: 'null'
title: Outbound Text Number
description: Outbound text number
websocket_url:
anyOf:
- type: string
- type: 'null'
title: Websocket Url
description: WebSocket URL for real-time communication
background_noise_volume:
anyOf:
- type: number
- type: 'null'
title: Background Noise Volume
description: Volume of background noise
expected_tool_calls:
anyOf:
- items:
$ref: '#/components/schemas/ExpectedToolCall'
type: array
- type: 'null'
title: Expected Tool Calls
description: Expected tool calls
allow_end_call_tool:
anyOf:
- type: boolean
- type: 'null'
title: Allow End Call Tool
description: Allow the digital human to end the tool call
default: true
endpointing_delay:
anyOf:
- type: number
- type: 'null'
title: Endpointing Delay
description: Delay for endpointing
creativity:
anyOf:
- type: number
- type: 'null'
title: Creativity
description: Temperature setting
hangup_phrases:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Hangup Phrases
description: Phrases that trigger hangup
hangup_instructions:
anyOf:
- type: string
- type: 'null'
title: Hangup Instructions
description: Freeform instructions for how/when to hang up
allow_silence_tool:
anyOf:
- type: boolean
- type: 'null'
title: Allow Silence Tool
description: Allow the digital human to use the silence tool
default: false
silence_tool_instructions:
anyOf:
- type: string
- type: 'null'
title: Silence Tool Instructions
description: Tool instructions; "default" for built-in behavior or a custom string.
default: default
silence_timeout:
anyOf:
- type: integer
- type: 'null'
title: Silence Timeout
description: Silence timeout in seconds
role_description:
anyOf:
- type: string
- type: 'null'
title: Role Description
description: Description of the role for the digital human
created_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Created At
description: When this digital human was created
traits:
anyOf:
- items:
$ref: '#/components/schemas/Trait'
type: array
- type: 'null'
title: Traits
description: List of traits associated with this digital human
interruptions:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Interruptions
description: Interruption configuration for the digital human
scripted_responses:
anyOf:
- items:
$ref: '#/components/schemas/ScriptedResponse'
type: array
- type: 'null'
title: Scripted Responses
description: List of scripted responses for the digital human
speaks_first_config:
anyOf:
- $ref: '#/components/schemas/SpeaksFirstConfig'
- type: 'null'
description: 'Speaks first config: speaks_first, mode (custom|ai_generated), message (when custom)'
original_transcript:
anyOf:
- type: string
- type: 'null'
title: Original Transcript
description: The original transcript text attached to this digital human
formatted_transcript:
anyOf:
- items:
additionalProperties:
type: string
type: object
type: array
- type: 'null'
title: Formatted Transcript
description: 'Structured transcript as [{"role": "USER"|"AGENT", "utterance": "..."}]'
enriched_playback:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Enriched Playback
description: 'Optional enriched playback stored as JSONB: a list of turn objects'
livekit_metadata:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Livekit Metadata
description: LiveKit-specific configuration and metadata for this digital human
type: object
required:
- intent
- success_criteria
title: DigitalHumanResponseData
description: Response model for digital human data.
DigitalHumanRequestData:
properties:
intent:
type: string
title: Intent
description: Description of the digital human. Leave empty when enriched_playback is set; the agent uses playback instead.
default: ''
success_criteria:
type: string
title: Success Criteria
description: Success criteria. Leave empty when enriched_playback is set; the agent uses playback instead.
default: ''
name:
anyOf:
- type: string
- type: 'null'
title: Name
description: Name of the digital human
tag:
anyOf:
- type: string
- type: 'null'
title: Tag
description: Tag for categorizing the digital human
language:
anyOf:
- $ref: '#/components/schemas/LanguageType'
- type: 'null'
description: Language the digital human speaks
default: en
accent:
anyOf:
- $ref: '#/components/schemas/AccentType'
- type: 'null'
description: Accent of the digital human
gender:
anyOf:
- $ref: '#/components/schemas/GenderType'
- type: 'null'
description: Gender of the digital human
background_noise:
anyOf:
- $ref: '#/components/schemas/BackgroundNoiseType'
- type: 'null'
description: Type of background noise
default: none
voice_speed:
anyOf:
- $ref: '#/components/schemas/VoiceSpeedType'
- type: 'null'
description: Speed of the digital human's voice
default: normal
audio_quality:
anyOf:
- $ref: '#/components/schemas/AudioQualityType'
- type: 'null'
description: Audio quality of the digital human's voice
default: high
fluency:
anyOf:
- $ref: '#/components/schemas/FluencyType'
- type: 'null'
description: Fluency level of the digital human's speech
default: native
verbosity:
anyOf:
- $ref: '#/components/schemas/VerbosityType'
- type: 'null'
description: Verbosity level of the digital human's responses
default: medium
phone_number:
type: string
title: Phone Number
description: Phone number for the digital human
outbound_text_number:
anyOf:
- type: string
- type: 'null'
title: Outbound Text Number
description: Outbound text number
background_noise_volume:
anyOf:
- type: number
maximum: 1.0
minimum: 0.0
- type: 'null'
title: Background Noise Volume
description: Volume of background noise
default: 0.8
expected_tool_calls:
anyOf:
- items:
$ref: '#/components/schemas/ExpectedToolCall'
type: array
- type: 'null'
title: Expected Tool Calls
description: Expected tool call outputs
allow_end_call_tool:
anyOf:
- type: boolean
- type: 'null'
title: Allow End Call Tool
description: Allow the digital human to end the tool call
default: true
endpointing_delay:
anyOf:
- type: number
- type: 'null'
title: Endpointing Delay
description: Delay for endpointing
default: 1.5
creativity:
anyOf:
- type: number
maximum: 2.0
minimum: 0.0
- type: 'null'
title: Creativity
description: How creative the digital human is (Model temperature)
default: 0.7
hangup_phrases:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Hangup Phrases
description: Phrases that trigger hangup
hangup_instructions:
anyOf:
- type: string
- type: 'null'
title: Hangup Instructions
description: Freeform instructions for how/when to hang up
allow_silence_tool:
type: boolean
title: Allow Silence Tool
description: Allow the digital human to use the silence tool
default: false
silence_tool_instructions:
type: string
title: Silence Tool Instructions
description: Tool instructions; use "default" for built-in behavior or custom text
default: default
silence_timeout:
anyOf:
- type: integer
minimum: 15.0
- type: 'null'
title: Silence Timeout
description: Silence timeout in seconds
role_description:
anyOf:
- type: string
- type: 'null'
title: Role Description
description: Description of the role for the digital human
traits:
anyOf:
- items:
$ref: '#/components/schemas/Trait'
type: array
- type: 'null'
title: Traits
description: List of traits associated with this digital human
interruptions:
anyOf:
- $ref: '#/components/schemas/SimpleInterruptionConfig'
- $ref: '#/components/schemas/KeywordsInterruptionConfig'
- $ref: '#/components/schemas/ContextualInterruptionConfig'
- type: 'null'
title: Interruptions
description: Interruption configuration for the digital human
scripted_responses:
anyOf:
- items:
$ref: '#/components/schemas/ScriptedResponse'
type: array
- type: 'null'
title: Scripted Responses
description: List of scripted responses for the digital human
speaks_first_config:
anyOf:
- $ref: '#/components/schemas/SpeaksFirstConfig'
- type: 'null'
description: Speaks first configuration for the digital human
original_transcript:
anyOf:
- type: string
- type: 'null'
title: Original Transcript
description: Original transcript text to replay. When provided (and formatted_transcript not provided), utterances are extracted via LLM and used as the intent.
formatted_transcript:
anyOf:
- items:
additionalProperties:
type: string
type: object
type: array
- type: 'null'
title: Formatted Transcript
description: Pre-computed structured transcript as [{role, utterance}]. When provided, skips the format-transcript LLM call.
enriched_playback:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Enriched Playback
description: 'Optional enriched playback stored as JSONB: a list of turn objects'
always_on_mode:
anyOf:
- type: boolean
- type: 'null'
title: Always On Mode
description: Whether always-on mode is enabled
default: false
always_on_active:
anyOf:
- type: boolean
- type: 'null'
title: Always On Active
description: When true, this DH actively receives calls on phone_number. Defaults to True when phone_number is set.
num_runs:
anyOf:
- type: integer
minimum: 1.0
- type: 'null'
title: Num Runs
description: Number of times this digital human is run per simulation run (run count).
default: 1
livekit_metadata:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Livekit Metadata
description: LiveKit-specific configuration and metadata for this digital human
type: object
required:
- phone_number
title: DigitalHumanRequestData
description: Digital human data model for requests (without id and created_at).
DigitalHumansListResponse:
properties:
digital_humans:
items:
$ref: '#/components/schemas/DigitalHumanResponseData'
type: array
title: Digital Humans
description: List of digital humans
total:
type: integer
title: Total
description: Total number of digital humans
simulation_id:
type: integer
title: Simulation Id
description: ID of the simulation
type: object
required:
- digital_humans
- total
- simulation_id
title: DigitalHumansListResponse
description: Response model for listing digital humans by simulation.
OccurrenceMode:
type: string
enum:
- always
- first_n
title: OccurrenceMode
description: Enum for scripted response occurrence modes.
KeywordResponse:
properties:
keyword:
type: string
title: Keyword
description: The keyword to listen for and interrupt on
response:
type: string
title: Response
description: Response to say when keyword is detected
probability:
type: number
maximum: 1.0
minimum: 0.0
title: Probability
description: Probability of responding (0.0-1.0) - defaults to 1.0
default: 1.0
type: object
required:
- keyword
- response
title: KeywordResponse
description: Model for a keyword response configuration.
GenerateIntentSummaryRequest:
properties:
test_case_id:
type: integer
title: Test Case Id
description: ID of the test case
type: object
required:
- test_case_id
title: GenerateIntentSummaryRequest
description: Request model for generating intent summary.
TraitDataType:
type: string
enum:
- BOOLEAN
- STRING
- DATE
- NUMBER
title: TraitDataType
description: Enum for trait data types.
SpeaksFirstConfig:
properties:
speaks_first:
type: boolean
title: Speaks First
description: Whether the digital human speaks first in the call
mode:
anyOf:
- type: string
enum:
- custom
- ai_generated
- type: 'null'
title: Mode
description: 'When speaks_first is true: ''custom'' (user-provided message) or ''ai_generated'' (no message)'
message:
anyOf:
- type: string
- type: 'null'
title: Message
description: When mode is 'custom', the message the digital human says first
type: object
required:
- speaks_first
title: SpeaksFirstConfig
description: 'Configuration for whether the digital human speaks first and how.
Stored as JSONB in Supabase (speaks_first_config).'
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
LanguageType:
type: string
enum:
- en
- es
- pt
- ja
- tr
- hi
- ar
- ru
- zh
- ml
- fr
- yue
- vi
- de
title: LanguageType
description: Enum for supported language types.
GeneratePromptSummaryRequest:
properties:
prompt_id:
type: string
title: Prompt Id
description: ID of the prompt (UUID)
type: object
required:
- prompt_id
title: GeneratePromptSummaryRequest
description: Request model for generating prompt summary.
VerbosityType:
type: string
enum:
- low
- medium
- high
title: VerbosityType
description: Enum for verbosity level options.
ScriptedResponse:
properties:
match_type:
$ref: '#/components/schemas/MatchType'
description: 'Type of match: ''exact'' or ''context'''
match_phrase:
type: string
title: Match Phrase
description: The phrase to match against
response_type:
$ref: '#/components/schemas/src__models__digital_humans__enums__ResponseType'
description: 'Type of response: ''phrase'', ''silence'', or ''dtmf'''
response_value:
anyOf:
- type: string
- type: 'null'
title: Response Value
description: The response text (required if response_type is 'phrase' or 'dtmf', optional for 'silence')
occurrence_mode:
$ref: '#/components/schemas/OccurrenceMode'
description: 'When to apply: ''always'' or ''first_n'''
occurrence_n:
anyOf:
- type: integer
exclusiveMinimum: 0.0
- type: 'null'
title: Occurrence N
description: Number of times to apply (required if occurrence_mode is 'first_n', must be > 0)
silence_duration:
anyOf:
- type: integer
exclusiveMinimum: 0.0
- type: 'null'
title: Silence Duration
description: Duration in seconds for silence period (only used when response_type is
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bluejay/refs/heads/main/openapi/bluejay-digital-humans-api-openapi.yml