{"openapi":"3.1.0","info":{"title":"Manifest API","summary":"Create startup ideas and generate business documents with AI.","description":"Public REST API for Manifest. Authenticate with an API key sent as `Authorization: Bearer manifest_sk_...`. Keys carry scopes: `ideas.read` for reads and `ideas.write` for writes and generation (the coarse `read` and `write` scopes cover every `*.read` / `*.write` permission). Limits depend on the API tier; see https://manifeststartup.com/pricing.md. Manifest is in development and the public site is a demo preview.","contact":{"name":"Manifest","url":"https://manifeststartup.com/contact"},"version":"1.0.0"},"servers":[{"url":"https://manifeststartup.com","description":"Production"}],"paths":{"/api/v1/":{"get":{"tags":["API"],"summary":"Api Info","description":"Get API information and status.","operationId":"api_info","responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiInfo"}}}}},"security":[]}},"/api/v1/ideas":{"get":{"tags":["Ideas"],"summary":"List Ideas","description":"List all ideas for the authenticated user.\n\nRequires scope `ideas.read`.","operationId":"list_ideas","responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaList"}}}},"401":{"description":"Missing, malformed or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks a required scope, or the idea belongs to another user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Per-minute, per-key or monthly request limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyBearer":[]}],"x-required-scopes":["ideas.read"]},"post":{"tags":["Ideas"],"summary":"Create Idea","description":"Create a new idea.\n\nRequires scope `ideas.write`.","operationId":"create_idea","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaCreate"}}}},"responses":{"201":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Idea"}}}},"401":{"description":"Missing, malformed or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks a required scope, or the idea belongs to another user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Per-minute, per-key or monthly request limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyBearer":[]}],"x-required-scopes":["ideas.write"]}},"/api/v1/ideas/{idea_id}":{"get":{"tags":["Ideas"],"summary":"Get Idea","description":"Get a specific idea by ID.\n\nRequires scope `ideas.read`.","operationId":"get_idea","parameters":[{"name":"idea_id","in":"path","required":true,"schema":{"type":"string","title":"Idea Id"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Idea"}}}},"401":{"description":"Missing, malformed or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks a required scope, or the idea belongs to another user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No idea with this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Per-minute, per-key or monthly request limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyBearer":[]}],"x-required-scopes":["ideas.read"]},"patch":{"tags":["Ideas"],"summary":"Update Idea","description":"Update an existing idea.\n\nRequires scope `ideas.write`.","operationId":"update_idea","parameters":[{"name":"idea_id","in":"path","required":true,"schema":{"type":"string","title":"Idea Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaUpdate"}}}},"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Idea"}}}},"401":{"description":"Missing, malformed or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks a required scope, or the idea belongs to another user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No idea with this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Per-minute, per-key or monthly request limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyBearer":[]}],"x-required-scopes":["ideas.write"]},"delete":{"tags":["Ideas"],"summary":"Delete Idea","description":"Delete an idea.\n\nRequires scope `ideas.write`.","operationId":"delete_idea","parameters":[{"name":"idea_id","in":"path","required":true,"schema":{"type":"string","title":"Idea Id"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaDeleted"}}}},"401":{"description":"Missing, malformed or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks a required scope, or the idea belongs to another user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No idea with this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Per-minute, per-key or monthly request limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyBearer":[]}],"x-required-scopes":["ideas.write"]}},"/api/v1/ideas/{idea_id}/generate":{"post":{"tags":["API"],"summary":"Generate Documents","description":"Generate documents for an idea (business model canvas, pitch deck, etc.).\n\nRequires scope `ideas.write`.","operationId":"generate_documents","parameters":[{"name":"idea_id","in":"path","required":true,"schema":{"type":"string","title":"Idea Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentGenerate"}}}},"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"401":{"description":"Missing, malformed or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks a required scope, or the idea belongs to another user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No idea with this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Per-minute, per-key or monthly request limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyBearer":[]}],"x-required-scopes":["ideas.write"]}},"/api/v1/usage":{"get":{"tags":["API"],"summary":"Get Usage","description":"Get current API usage statistics.","operationId":"get_usage","responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Usage"}}}},"401":{"description":"Missing, malformed or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks a required scope, or the idea belongs to another user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Per-minute, per-key or monthly request limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyBearer":[]}]}}},"components":{"schemas":{"DocumentGenerate":{"properties":{"document_types":{"items":{"type":"string"},"type":"array","title":"Document Types","description":"Types of documents to generate: business_model_canvas, pitch_deck, prd, patent","default":["business_model_canvas"]}},"type":"object","title":"DocumentGenerate"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IdeaCreate":{"properties":{"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title","description":"Title of the idea"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the idea"}},"type":"object","required":["title"],"title":"IdeaCreate"},"IdeaUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"New title for the idea"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"New description for the idea"}},"type":"object","title":"IdeaUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Idea":{"type":"object","description":"A startup idea owned by the API key's user.","properties":{"object":{"type":"string","enum":["idea"]},"id":{"type":"string","format":"uuid","description":"Idea identifier."},"title":{"type":"string"},"description":{"type":["string","null"]},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"is_published":{"type":"boolean"},"has_business_model_canvas":{"type":"boolean"},"has_pitch_deck":{"type":"boolean"},"has_prd":{"type":"boolean"},"has_patent":{"type":"boolean"}},"required":["id","title"]},"IdeaList":{"type":"object","description":"All ideas for the key's user, newest first. Not paginated.","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Idea"}}},"required":["object","data"]},"IdeaDeleted":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string"}},"required":["deleted","id"]},"GenerationResult":{"type":"object","properties":{"object":{"type":"string","enum":["generation_result"]},"idea_id":{"type":"string"},"status":{"type":"string","enum":["completed"]},"documents":{"type":"object","description":"Per-document outcome keyed by business_model_canvas, pitch_deck, product_requirements_document or provisional_patent.","additionalProperties":{"type":"object","properties":{"status":{"type":"string","enum":["generated","failed"]},"error":{"type":"string"}},"required":["status"]}}},"required":["object","idea_id","documents","status"]},"Usage":{"type":"object","description":"Usage statistics for the API client (fields may grow over time).","properties":{"object":{"type":"string","enum":["usage"]}},"additionalProperties":true},"ApiInfo":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"status":{"type":"string"},"documentation":{"type":"string"}}},"Error":{"type":"object","description":"Error envelope returned for every non-2xx /api/v1 response.","properties":{"detail":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string","examples":["authentication_error","permission_error","not_found_error","rate_limit_error","server_error"]},"code":{"type":"string","examples":["insufficient_scope"]}},"required":["message","type","code"]}},"required":["error"]}},"required":["detail"]}},"securitySchemes":{"ApiKeyBearer":{"type":"http","scheme":"bearer","bearerFormat":"manifest_sk_<64 hex characters>","description":"Manifest API key. Scopes granted to the key: ideas.read, ideas.write (or the coarse read / write)."}}},"externalDocs":{"description":"API reference","url":"https://manifeststartup.com/docs/api"}}