Test an automation
Walks the draft for one person without sending or changing anything, and reports each step with its templates filled in.
Waits are skipped, and a wait for an event times out unless receivedEvents names it.
Guide: Automations
A project secret key: vh_sk_... for production, vh_sk_test_... for test. Keep it on your servers.
In: header
Path parameters
The project's id, proj_.... A secret key works only in the project it belongs to.
The automation's id, auto_....
Request body
application/json
TypeScript definitions
Use the request body type in TypeScript.
The person to test with; without one, a person with nothing known about them.
The event to pretend started the run.
Events to assume happen during waits; a wait for any other event times out.
Values for the variables the automation declares, by key: text, numbers or booleans.
Answers to assume, to try a path this person wouldn't take: by a flag's key or an A/B test's id, a variant, an arm, or on or off for a flag.
Examples
curl -X POST "https://api.voidhash.com/api/v1/projects/proj_tz4a98xxat96iws9zmbrgj3a/automations/auto_p4n8c2v6x0z3q7w1e5r9t2y6/test" \ -H "Authorization: Bearer vh_sk_..." \ -H "Content-Type: application/json" \ -d '{ "personId": "person_h7d2k9m4x1c6v8b3n5q0w2e7" }'{ "isMatch": true, "isComplete": true, "issues": [], "steps": [ { "stepId": "welcome", "stepType": "send_push", "port": "out", "action": { "title": "Hi Ada Lovelace", "body": "Glad you're here." }, "waitSeconds": null, "waitsFor": null, "problem": null }, { "stepId": "wait", "stepType": "delay", "port": "out", "action": null, "waitSeconds": 86400, "waitsFor": null, "problem": null }, { "stepId": "paid", "stepType": "condition", "port": "yes", "action": null, "waitSeconds": null, "waitsFor": null, "problem": null } ]}{ "error": { "type": "invalid_request", "code": "invalid_body", "message": "The request body is invalid: Expected object" }}{ "error": { "type": "unauthenticated", "code": "invalid_api_key", "message": "This secret key is not valid." }}{ "error": { "type": "permission_denied", "code": "permission_denied", "message": "Insufficient permissions." }}{ "error": { "type": "not_found", "code": "person_not_found", "message": "This project has no person person_h7d2k9m4x1c6v8b3n5q0w2e7.", "param": "personId" }}{ "error": { "type": "conflict", "code": "string", "message": "string", "param": "string" }}{ "error": { "type": "internal", "code": "internal_error", "message": "Something went wrong on our side. Try again, and contact support with the Request-Id header if it keeps failing." }}Response body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
Errors
| Status | type | code | When |
|---|---|---|---|
| 404 | not_found | person_not_found | For a person the project does not have. |
It can also fail with the errors every operation shares, such as unauthenticated; see Errors.
More in Automations
- List automations
GET - Create an automation
POST - Retrieve the automation catalog
GET - List audience cohorts
GET - Retrieve an automation
GET - Update an automation
PATCH - Check an automation
POST - Activate an automation
POST - Pause an automation
POST - Archive an automation
POST - Unarchive an automation
POST - List an automation's versions
GET - Retrieve an automation's stats
GET - List an automation's runs
GET - Start a run
POST - Retrieve a run
GET - Cancel a run
POST - Retry a run
POST
Something wrong or missing on this page? Tell us by email or on Discord.