{"name":"ChatStack Agent API","version":"1.2.0","description":"REST API for AI agents. Skip-interview submit uses AGENT_API_KEY. Interview API accepts a portal PAT (cst_…) or guest interview_token from unauthenticated session create — never put AGENT_API_KEY in MCP client config. Public interview MCP is a separate hosted server (no PAT). This GET is the public discovery document.","status":"stable","documentation":"https://www.chatstack.app/llms-full.txt","schema":{"openapi":"https://www.chatstack.app/openapi.json","aiPlugin":"https://www.chatstack.app/.well-known/ai-plugin.json","dataset":"https://www.chatstack.app/ai-dataset.json"},"markdown":{"summary":"https://www.chatstack.app/llms.txt","fullReference":"https://www.chatstack.app/llms-full.txt"},"auth":{"skipInterview":{"type":"http","scheme":"bearer","header":"Authorization","headerExample":"Authorization: Bearer <AGENT_API_KEY>","howToRequest":"https://www.chatstack.app/speak-to-a-human"},"interview":{"type":"http","scheme":"bearer","header":"Authorization","headerExample":"Authorization: Bearer cst_… | <interview_token>","mintTokenUrl":"https://www.portal.chatstack.app/settings/api-access","note":"PAT for portal-bound sessions; omit Authorization on POST session for guest interview_token. Same guest token for turn/action/status/submit-prd."}},"mcp":{"portal":{"note":"Hosted portal MCP requires Bearer cst_… (CRM tools only).","package":"@chatstack/mcp"},"publicInterview":{"note":"Hosted interview MCP requires no PAT; call start_session first. Environment-specific Cloud Run URL from ops.","tools":["start_session","send_turn","send_action","get_interview_status","submit_prd"]}},"capabilities":["Run the 4-agent interview without the iframe (Interview API + PAT or guest token)","Public interview MCP without a portal account","Submit structured PRD artifacts (skip-interview AGENT_API_KEY path)","Receive submission ID and portal project/version IDs on success","Return validation errors with field-level details"],"operations":[{"id":"createInterviewSession","method":"POST","path":"/api/agent/interview/session","url":"https://www.chatstack.app/api/agent/interview/session","contentType":"application/json","auth":"personal_access_token_or_none_for_guest"},{"id":"interviewTurn","method":"POST","path":"/api/agent/interview/turn","url":"https://www.chatstack.app/api/agent/interview/turn","contentType":"application/json","auth":"personal_access_token_or_interview_token"},{"id":"interviewAction","method":"POST","path":"/api/agent/interview/action","url":"https://www.chatstack.app/api/agent/interview/action","contentType":"application/json","auth":"personal_access_token_or_interview_token"},{"id":"interviewStatus","method":"GET","path":"/api/agent/interview/status","url":"https://www.chatstack.app/api/agent/interview/status","auth":"personal_access_token_or_interview_token"},{"id":"interviewSubmitPrd","method":"POST","path":"/api/agent/interview/submit-prd","url":"https://www.chatstack.app/api/agent/interview/submit-prd","contentType":"application/json","auth":"personal_access_token_or_interview_token"},{"id":"submitPrd","method":"POST","path":"/api/agent/submit","url":"https://www.chatstack.app/api/agent/submit","contentType":"application/json","auth":"agent_api_key","requestSchema":"https://www.chatstack.app/openapi.json#/components/schemas/SubmitRequest","responseSchema":"https://www.chatstack.app/openapi.json#/components/schemas/SubmitSuccess"}],"limits":{"maxBodyBytes":10485760,"rateLimit":{"requests":5,"windowSeconds":3600,"scope":"per-IP","note":"Skip-interview submit. Interview submit-prd for PAT is per profile+IP (hourly). Guest/public interview also has daily per-IP caps on session, turn/action, and submit; 429 includes error, code, message, retry_after_seconds."}},"contact":{"email":"hello@chatstack.app","url":"https://www.chatstack.app/speak-to-a-human"},"terms":"https://www.chatstack.app/non-disclosure-and-tcs","updatedAt":"2026-09-15T15:37:20.205Z"}