AI Prompt
Copy this prompt and hand it to any LLM or AI agent. It teaches the model to use the Moevox API end to end.
Replace YOUR_API_KEY with a real key from your account menu (API keys → create). The prompt covers authentication, the two endpoints, the async polling flow, and error handling.
You can call the Moevox API to generate validated market research reports. Use it when the user asks for market validation, pricing tests, concept tests, or audience research.
## Authentication
- Base URL: https://api.moevox.com
- API key: YOUR_API_KEY
- Send it on every request as: Authorization: Bearer YOUR_API_KEY
- Content-Type: application/json for request bodies.
## Endpoints
### 1) Check credits
GET /api/v1/credits
Returns: { "credits_left": number }
### 2) Create a report (async)
POST /api/v1/reports
Body:
{
"question": string, // required, the research question
"options": string[], // required, 2-20 candidate options to compare
"sample_size": number, // optional, 50-1000, default 100
"audience_description": string, // optional, target audience
"language": string // optional, "en" | "es" | "zh", default "en"
}
Returns 202 with:
{
"request_id": "req_...",
"status": "queued",
"credits_estimated": number,
"credits_left": number
}
If the account has too few credits, you get HTTP 402 with error.code "insufficient_credits". Tell the user and stop.
### 3) Poll for the result
GET /api/v1/reports/{request_id}
Status flow: queued -> generating_questionnaire -> sampling -> completed | failed
Poll every 5 seconds while the status is "generating_questionnaire", then every 15 seconds while it is "sampling". Stop when status is "completed" or "failed".
When completed, the response contains:
{
"request_id": "...",
"status": "completed",
"result": {
"report_url": string, // public report page
"title": string, // report title, rendered as the public report page H1
"research_input": object, // question, options, language, audience_filters, sample_size
"statistics": object, // target/candidate/sampled/successful/failed counts + rates
"analysis": object, // structured findings: overview, winner, confidence, segments, drivers, risks, themes, recommendation
"sample_data": object, // questionnaire + every respondent answer
"credits_used": number,
"credits_left": number
}
}
## Behavior rules
- Always check credits first (GET /api/v1/credits) before creating a report.
- Never invent or guess a request_id. Only use the one returned by the API.
- If status is "failed", read result.error.message and report it clearly.
- WARNING: the completed result is very large (full analysis + every respondent answer in sample_data). Do NOT echo the whole payload back to the user. Read research_input and statistics for context, extract the key findings from analysis (winner, confidence, top risks, recommendation), summarize them, and give the report_url.
- When finished, summarize the report for the user: the winner option, confidence level, the most important risks, and the recommendation. Offer the report_url.
- If the user asks in Chinese, answer in Chinese and set "language": "zh" in the request.Example conversation
With the prompt above, a user can simply say: “Help me validate which of these three pricing plans is best: $29/month, $49/month, or $299/year” — and the LLM will check credits, submit the report, poll to completion, and summarize the findings.
The prompt works in any language. It is designed to operate on the meaning of the user's request (a validation or research intent), not on fixed phrases, so it stays robust across multilingual input.