Is persona simulation a substitute for user research?
No. It is a planning and hypothesis tool that should complement direct research and measured results.
Runs a persona simulation: predicts how a resolved person would respond to a question, with sentiment and confidence signals. Requires an identifier (email, phone, or social_media_url) and a question (max 1000 chars); optional name/company/city sharpen the persona. The request is queued and returns a request_id - poll the status endpoint about every 5 seconds or supply a callback_url.
Manual credentials take precedence over your account key.
The Simulation API models likely responses from a person or persona, helping teams test messaging, positioning, and research hypotheses before outreach.
This endpoint is asynchronous. A successful submit returns a request_id while the job runs in the background. Poll the same path with a GET request - same authentication headers - passing the request_id as a
query parameter:
Each poll returns the job's current status; once it is completed the payload carries the result shown under Responses. Polling an
unknown or expired request_id returns 404 request_not_found.
| Status | Meaning |
|---|---|
| queued · processing · pending | The job is still running - keep polling. |
| completed | The job finished; the payload carries the result and completed: true. |
| failed | Terminal - the job could not complete; the error field explains why. |
Poll every few seconds at first, backing off for long-running jobs. Polling is free - status checks never burn credits.
callback_url parameter and the completed payload is POSTed to your endpoint
when the job finishes - no polling required. Delivery is retried up to 5 times with exponential backoff (1s,
5s, 15s, 1m, 5m) and a 30-second timeout per attempt; respond with a 2xx status to acknowledge receipt.Credits are charged based on the matched configuration. The listed cost is the per-result unit price.
| Feature | Credits | Notes |
|---|---|---|
| Simulation | - | Minimum 10 credits required to submit; charged when processed |
| No match | 0 | Empty results never burn credits |
A successful response wraps the payload in the { success, data, timestamp } envelope (also shown live in the panel on the right):
{
"success": true,
"data": {
"request_id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4_1717000000_4271",
"status": "completed",
"completed": true,
"result": {
"at_a_glance": {
"sentiment": "positive",
"short_answer": "Likely open to evaluating a cloud-native CRM if integrations and migration are strong.",
"conviction_level": "moderate",
"confidence": "high",
"confidence_reason": "Strong recent social signal directly related to the question topic.",
"key_drivers": [
"5+ years in SaaS product leadership",
"Recent posts about CRM limitations"
]
},
"is_sufficient_signal": true,
"simulated_response": "We're always evaluating new tools. Our current solution has reporting gaps - show me better integrations and a faster migration path and I'd be open to a conversation."
},
"completed_on": "2026-01-15T10:35:00Z"
},
"timestamp": "2026-01-01T00:00:00"
}