Digital Humans

Update Digital Human

Changed on

Update a digital human by ID.

put/v1/update-digital-human/{digital_human_id}

Request

  • Base URL
    https://api.getbluejay.ai
  • URL
    https://api.getbluejay.ai/v1/update-digital-human/{digital_human_id}
  • Auth
    HTTPBearer (a scheme the document does not define)

Path parameters

digital_human_idinteger required

Headers

X-Organization-Idstring
X-API-Keystring required

API key required to authenticate requests.

Request body

intentstring nullable

The scenario the digital human enacts, in ONE OR TWO SENTENCES: what this caller wants, not how to behave. It fills one slot in a prompt that ALREADY renders traits, verbosity, fluency, a not-the-agent guardrail and end-of-call instructions, so restating those here is duplicate prompt. Anything shaped like 'if the agent says X, do Y' does not belong here — prose makes it non-deterministic. Move it: case facts the agent may ask for (member ID, DOB, order number) to traits; lines that must be said verbatim, a keypad entry, or a deliberate pause to scripted_responses; who opens the call to speaks_first_config; voice and call conditions to their own fields; and lower creativity for repeatability. If you reach for 'correctly', 'appropriately' or 'successfully' you are describing what the AGENT should do — that goes in success_criteria.

namestring nullable

Name of the digital human

tagstring nullable

Tag for categorizing the digital human

tagsstring[] nullable

Full tag list, replacing the current tags; [] clears them. Takes precedence over tag, where an empty string leaves tags unchanged.

type'voicemail_custom' | 'voicemail_ai' | 'replay_smart' | 'replay_strict' | 'red_team' | 'scenario' | 'workflow' | 'persona' | 'journey'

What kind of digital human this is. Stored in test_cases.type; tags are free-form labels.

language'en' | 'es' | 'pt' | 'ja' | 'tr' | 'hi' | 'ar' | 'he' | 'ru' | 'zh' | 'ml' | 'fr' | 'yue' | 'vi' | 'de' | 'ko' | 'ur' | 'te' | 'ta' | 'mal' | 'kn' | 'mr' | 'gu' | 'tl' | 'el' | 'ad'

Enum for supported language types.

accent'multilingual' | 'american' | 'american2' | 'mature' | 'southern' | 'italian' | 'indian' | 'british' | 'australian' | 'scottish' | 'irish' | 'welsh' | 'mexican' | 'spanish' | 'portuguese' | 'french' | 'turkish' | 'japanese' | 'hindi' | 'arabic' | 'egyptian' | 'levantine' | 'hebrew' | 'russian' | 'chinese' | 'german' | 'korean' | 'urdu' | 'telugu' | 'tamil' | 'malayalam' | 'kannada' | 'marathi' | 'gujarati' | 'vietnamese' | 'cantonese' | 'tagalog' | 'greek' | 'autodetect' | 'watson' | 'watsonbritish' | 'watsonaustralian' | 'watsoncanadian'

Enum for accent options.

gender'male' | 'female'

Enum for gender options.

custom_voice_idstring nullable

ElevenLabs voice_id of a cloned voice. Send empty string or null to clear and revert to the stock accent voice.

background_noise'none' | 'office' | 'talking' | 'traffic' | 'cafe' | 'park' | 'tv' | 'noisy_restaurant' | 'hospital' | 'airport' | 'birdsong' | 'bus_station' | 'car_interior' | 'city_night' | 'city_traffic' | 'construction' | 'driving' | 'factory' | 'hotel_lobby' | 'hotel_restaurant' | 'keyboard_typing' | 'light_rain' | 'night_insects' | 'office_open_plan' | 'playground' | 'pub' | 'quiet_home' | 'rain' | 'restaurant_busy' | 'restaurant_party' | 'road_traffic' | 'school' | 'shopping_centre' | 'street' | 'subway_station' | 'subway_train' | 'supermarket' | 'thunderstorm' | 'train_station' | 'urban' | 'urban_park' | 'wind' | 'kitchen' | 'living_room' | 'meeting_room' | 'small_office' | 'cafeteria' | 'restaurant' | 'town_square' | 'bus_ride' | 'babble_light' | 'babble_crowd' | 'custom'

Enum for background noise options.

custom_background_noise_urlstring nullable

Bucket-relative path of the uploaded custom background noise audio; required when background_noise is 'custom'

voice_speed'slowest' | 'slow' | 'normal' | 'fast' | 'fastest'

Enum for voice speed options.

audio_quality'high' | 'medium' | 'low' | 'horrible'

Enum for audio quality options.

fluency'beginner' | 'intermediate' | 'native'

Enum for fluency level options.

verbosity'low' | 'medium' | 'high'

Enum for verbosity level options.

phone_numberstring nullable

Phone number for the digital human

extensionstring nullable

Extension dialed as DTMF after connecting when this DH calls an inbound agent. Send null or an empty string to clear it.

outbound_text_numberstring nullable

Outbound text number

follow_up_sms_success_criteriastring nullable

Criteria the captured follow-up SMS is graded against

background_noise_volumenumber nullable

Volume of background noise

allow_end_call_toolboolean nullable

Allow the digital human to end the tool call

allow_silence_toolboolean nullable

Allow the digital human to use the silence tool

allow_dtmf_toolboolean nullable

Allow the digital human to use the DTMF tool

default_dtmf_or_voiced'voiced' | 'dtmf'

Enum for DTMF vs voiced input mode.

silence_tool_instructionsstring nullable

Tool instructions; set to "default" for built-in behavior or custom text

endpointing_delaynumber nullable

Seconds the digital human waits before it replies. Named patience in the UI, and accepted under either name.

creativitynumber nullable

Model temperature for the digital human's own speech. Lower it (0.0-0.3) when you want the same call twice — regression tests and anything compared run over run. Keep near the 0.7 default for exploratory or red-team cases.

hangup_phrasesstring[] nullable

Phrases that trigger hangup

hangup_instructionsstring nullable

Freeform instructions for how/when to hang up. Omit the field to leave the stored value alone; send the literal string "default" to reset to the tuned built-in end-of-call behavior, which already handles ordinary goodbyes. Any other string REPLACES it, so write one only for a condition the default would miss.

silence_timeoutinteger nullable

Silence timeout in seconds

simulation_idsinteger[] nullable

Array of simulation IDs to associate with this digital human. If provided, completely replaces existing associations.

traits_mode'replace' | 'merge' nullable

How traits apply when you send traits on an update. Omitted or "merge" upserts only the listed traits by trait_name and keeps every other stored trait. "replace" deletes all stored traits first, then writes only the list — use this to remove traits or to set the full trait set from scratch.

scripted_responses_orderedboolean nullable

When true, scripted_responses run as a script in list order: only the next unfired one is armed, each fires once, and a blank match_phrase fires on the digital human's next turn. When false any scripted response fires whenever its match_phrase comes up.

role_descriptionstring nullable

Who this caller is, in one short line. Identity and disposition only: what they are calling about is intent, the facts they can recite are traits, how they sound is language/accent/fluency/verbosity. Never internal or agent-side information — the digital human only knows what a real caller would know.

original_transcriptstring nullable

Original transcript text. If changed from the current value, utterances are re-extracted and the intent is regenerated.

formatted_transcriptobject[] nullable

Pre-computed structured transcript as [{role, utterance}]. When provided alongside original_transcript, skips the LLM formatting call.

enriched_playbackobject[] nullable

Optional enriched playback stored as JSONB: a list of turn objects

num_runsinteger nullable

Number of times this digital human is run per simulation run (run count).

livekit_metadataobject nullable

LiveKit-specific configuration and metadata for this digital human. If provided, completely replaces existing metadata.

provider_request_dataobject nullable

Per-digital-human variables handed to the provider when it originates the call (Bland request_data, Vapi variableValues, Retell dynamic variables). Overrides the agent's template. If provided, completely replaces existing data; pass {} to clear.

always_on_modeboolean nullable

Whether always-on mode is enabled for this digital human

always_on_activeboolean nullable

When true, this DH actively receives calls on phone_number; when false, number is assigned but inactive

test_namestring nullable

User-facing label for this digital human

override_conflictboolean nullable

When true, allows activation to replace an existing always-on active DH using the same phone number.

system_prompt_rule_idsstring[] nullable

Ids of the system-prompt rules this digital human covers, from generate.

system_prompt_rule_quotesstring[] nullable

The quoted system-prompt rules this digital human covers, shown on its card.

workflow_v2_idstring uuid nullable

Source workflow_v2 UUID — set when this DH is generated from a workflow

workflow_path_indexinteger nullable

0-based path index within enumerate_workflow_v2_paths output

tested_pathstring[] nullable

Ordered names of the workflow path steps this DH was generated from (Generate-From-Workflow only).

attack_vectorstring nullable

Attack tactic key from VECTOR_CATALOG. NULL for non-red-team.

attack_typestring nullable

Umbrella attack category (recon | social_engineering | prompt_injection | audio_native).

attack_planobject nullable

Crescendo escalation ladder {objective, breach_predicate, ladder}.

Response

Successful Response

simulation_idsinteger[] nullable

List of simulation IDs associated with this digital human

simulation_idinteger nullable

ID of the associated simulation. Use simulation_ids instead.

Changes

    • info

      request property list-of-types was widened by adding types array to media type application/json

    • info

      added the new optional request property

    • info

      added the optional property / to the response with the status