---
title: "Generate Digital Humans"
method: POST
path: "/v1/generate-digital-humans"
tags: ["Digital Humans"]
---

# Generate Digital Humans

`POST /v1/generate-digital-humans`

Given an agent this endpoint generates digital humans to test that agent based on varying simulation types.

## Headers

- `X-API-Key` string, required

## Request body

- DigitalHumanRequest — Pydantic model for digital humans (simulation type) request
  - `agent_id` string, required — ID of the agent to be used to generate the digital humans
  - `simulation_id` string, nullable — Optionally attach the digital humans to a simulation
  - `prompt_id` string, uuid, nullable — Prompt UUID associated with the simulation
  - `knowledge_base_id` string, uuid, nullable — Knowledge base UUID associated with the simulation
  - `goal_adherence` GoalAdherence[], nullable — List of goal adherence scenarios
    - `goal` string, required — Description of the goal
    - `num_calls` integer, required — Number of calls that adhered to the goal
  - `workflow_adherence` object, nullable — Dictionary of workflow IDs and their counts
  - `workflow_adherence_v2` object, nullable — Dictionary of workflow_v2 IDs and their counts (uses new graph definition format)
  - `replay_transcript` union[], nullable — List of transcript replays to generate digital humans from
    - union
      - ReplayTranscriptFromText — Replay transcript by providing the transcript text directly.
        - `transcript` string, required — The transcript text to analyze and replay
        - `success_criteria` string, nullable — Success criteria for the scenario (auto-generated if not provided)
        - `mode` 'strict' | 'smart' | 'persona' — Mode for transcript replay: 'strict', 'smart' (default), or 'persona'
      - ReplayTranscriptFromConversation — Replay transcript by referencing an existing conversation ID.
        - `conversation_id` string, required — ID of an existing conversation log to retrieve transcript from
        - `success_criteria` string, nullable — Success criteria for the scenario (auto-generated if not provided)
        - `mode` 'strict' | 'smart' | 'persona' — Mode for transcript replay: 'strict', 'smart' (default), or 'persona'
  - `customer_personas` CustomerPersonaRequest[], nullable — List of customer personas to be used in the simulation
    - `name` string, required — Name of the customer persona
    - `description` string, required — Description of the customer persona
    - `goal` string, required — Goal or objective of the customer persona
    - `num_calls` integer, required — Number of calls that matched the customer persona
  - `load_testing` integer, nullable — Number of load testing calls
  - `red_teaming` integer, nullable — Number of red teaming calls
  - `red_team_attacks` SocialEngineeringRedTeamConfig
    - `batches` AttackBatch[]
      - `intent` string, required — Free-text attacker goal (e.g. 'force a credential reset without proper auth'). Persisted to test_cases.intent_summary - the same column goal-adherence DHs use. FE may seed from preset templates but value is editable.
      - `vector_id` string, required — Attack tactic - key in VECTOR_CATALOG. Catalog-bound (not editable). Drives attack_type derivation.
      - `traits` SrcModelsDigitalHumansRedTeamAttackTrait[] — Free-form customer traits the attacker possesses; missing fields = attacker doesn't have them.
        - `name` string, required — Free-form trait label, e.g. 'SSN', 'Date of Birth'.
        - `data_type` 'string' | 'number' | 'boolean' | 'date', required — Data type of the trait value.
        - `value` unknown
        - `completeness` string, nullable — e.g. 'last_4', 'year_only', 'full'. May be stamped by partial-autogen heuristic server-side.
      - `count` integer, required — Number of scenarios to generate for this batch.
      - `custom_success_criteria` string, nullable — Override the LLM-generated success criteria.
  - `traits` SrcModelsTraitsTraitTrait[], nullable — List of traits to apply to all generated digital humans
    - `trait_name` string, required — Name of the trait
    - `trait_data_type` 'BOOLEAN' | 'STRING' | 'DATE' | 'NUMBER', required — Enum for trait data types.
    - `value` unknown, required
    - `is_sip_header` boolean — Whether this trait is a SIP header
  - `num_runs` integer, nullable — Number of runs per digital human per simulation run (run count).

## Response `200`

Successful Response

- SrcModelsDigitalHumansGenerateDigitalHumanRequestDigitalHumanResponse
  - `digital_humans` unknown[] — List of digital humans created for the simulation
    - unknown
  - `status` string — Status of the response
  - `success` boolean — Whether the generation succeeded
  - `test_scenarios` unknown[], nullable — Scenario view of created digital humans (includes original_transcript and formatted_transcript for transcript replays)
    - unknown
  - `warning` string, nullable — Warning message if the request was modified (e.g. truncated due to exceeding the max limit)

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/getbluejay/apis/bluejay-api.md) · [All operations](https://skmtc.net/getbluejay/apis/bluejay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getbluejay/bluejay-api/revisions/4ef94eeb836d/schema)
