Generate a simulation suite
Generate and save a simulation suite from reviewed test requirements, and assign it to an assistant. First draft requirements with POST /eval/simulation/onboarding/requirements. The response includes the saved suite, its simulations, and requirement coverage, including any gaps.
Requests can take up to 3 minutes. Set a client timeout of at least 200 seconds.
Use a unique idempotencyKey for each suite generation request. Retrying with the same key does not create a duplicate suite:
- On a timeout or a 5xx (502, 504, 524), retry with the same key. You get the saved suite, a 409 while it is still generating, or a fresh generation if the first one never saved.
- On a 409
SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS, the first request is still generating. WaitRetry-Afterseconds (15) and retry with the same key. - On a 409
SIMULATION_ONBOARDING_IDEMPOTENCY_KEY_REUSED, the key was used for a different assistant or requirements. Send a new key.
Review the generated simulations and coverage gaps. Revise the suite with PATCH /eval/simulation/onboarding/suite/{suiteId}, then run it with POST /eval/simulation/run.
Each organization can generate 20 suites per UTC day, shared with the dashboard, and 2 at a time. A retry that returns a saved suite does not count toward these limits. On a 429 SIMULATION_ONBOARDING_CONCURRENCY_LIMITED, wait Retry-After seconds (30) before retrying. On a 429 SIMULATION_ONBOARDING_QUOTA_EXCEEDED, wait until the daily limit resets at 00:00 UTC before retrying.
Authentication
Authenticate server-side requests with a private Vapi API key. Create or copy a key from the Vapi Dashboard and send it in the Authorization header as Bearer <token>. Keep private API keys out of client-side code and public repositories.
Request
Response
The test requirements used to generate the suite. Match their ids to coverage.gaps to identify uncovered requirements.
True when the request matched one already applied (same idempotencyKey or patchKey) and nothing changed.
Simulations an edit asked to rewrite that were not rewritten, for example because the rewrite did not generate in time. Retry them with a new patchKey.