Reference
API Docs
IdeaRoast exposes a small set of HTTP endpoints for integrating roast functionality into your own agents or tools. All endpoints are unauthenticated unless noted. The base URL is https://www.idearoast.dev.
/api/roast/freeFree Roast
Runs a quick single-agent roast at no cost. Rate limited to one request per IP per day. No authentication required.
Request body
{
"idea": string, // required — your startup idea
"stage"?: string, // optional — e.g. "just an idea", "MVP"
"targetMarket"?: string, // optional — e.g. "SMBs", "Gen Z"
"traction"?: string // optional — e.g. "100 users", "$5k MRR"
}Response
{
"tier": "roasted" | "needs-work" | "decent" | "ship-it",
"verdict": string, // one-line kill-shot or green flag
"survival_rating": number, // 1–10
"red_flags": string[] // top failure reasons
}Rate limit
1 request per IP per day. Exceeding returns 429 Too Many Requests.
/api/roast/streamFull Panel Stream
Runs the full 4-agent panel (Market, Tech, Finance, Timing) with live market data and streams results as Server-Sent Events. Development-only endpoint. In production, full panel roasts are generated via the Bitcoin payment flow — see the Agent API below.
Request body
{
"idea": string, // required
"stage"?: string,
"targetMarket"?: string,
"traction"?: string,
"isPublic"?: boolean // default true — appear on leaderboard
}SSE stream events
// Agent finding (emitted per agent)
data: { "type": "finding", "agent": string, "emoji": string,
"finding": string, "live": boolean }
// Verdict synthesis starting
data: { "type": "verdict" }
// Stream complete
data: { "type": "done", "id": string, "roastText": string,
"panelFindings": AgentFinding[] }
// Error
data: { "type": "error", "message": string }AgentFinding shape
{
agent: string, // e.g. "Market Agent"
emoji: string,
finding: string,
live: boolean
}/api/agentAgent API (x402)
Designed for autonomous AI agents. Self-describing when called with no parameters. When called with an idea query param, returns 402 Payment Required with BTC payment details. Once payment is detected on-chain, the roast generates automatically — poll /api/roast?id=<id> for the result.
Schema response (no params)
GET /api/agent
→ 200 { description, params, pricing, ... }Payment request (with idea)
GET /api/agent?idea=<encoded>&stage=<...>&market=<...>&traction=<...>
→ 402 {
"payment": {
"address": string, // BTC address
"amount_btc": string,
"amount_sats": number,
"amount_usd": string
},
"roast_id": string // poll with this ID
}Structured result (after completion)
GET /api/roast?id=<roast_id>
→ 200 {
"status": "complete",
"roast_text": string,
"panel_findings": AgentFinding[],
"structured": {
"survival_rating": number,
"tier": string,
"verdict": string,
"red_flags": string[],
"pivot": string
}
}/api/roast?id=<roast_id>Poll for Result
Polls for the status and result of a roast by ID. Used after initiating a BTC payment via the Agent API. Poll every 10–15 seconds until status is "complete" or "failed".
Response
// Pending
{ "status": "pending" }
// Complete
{
"status": "complete",
"roast_text": string,
"panel_findings": AgentFinding[]
}
// Failed
{ "status": "failed" }/api/btc-priceBTC Price
Returns the current BTC equivalent of the roast fee in real-time. Price quotes expire after 10 minutes. No parameters required.
Response
{
"amount_btc": string, // e.g. "0.00002341"
"amount_sats": number, // e.g. 2341
"amount_usd": string // e.g. "2.00"
}For machine-readable docs, see /llms.txt — formatted for LLM consumption.