{"openapi":"3.1.0","info":{"title":"agent-core API","version":"1.0.0","description":"Zero-account, single-payment reports. Paid content is only served after server-side Stripe verification."},"servers":[{"url":"https://agent-core.jobsiggy.workers.dev"}],"paths":{"/api/config/{product}":{"get":{"summary":"Public product config and disclosure","parameters":[{"name":"product","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Config"}}}},"/api/{product}/run":{"post":{"summary":"Run a job; returns preview + job_id only","parameters":[{"name":"product","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Preview or capacity state (capacity does not save a background job)"},"409":{"description":"Retry key input conflict or a run already in progress; pending runs include Retry-After"},"410":{"description":"Retry key refers to a deleted report; start a new run with a new key"},"429":{"description":"Per-minute rate limit; includes Retry-After"}}}},"/api/unlock":{"get":{"summary":"Verify a Stripe Checkout Session and unlock full output","responses":{"200":{"description":"Paid output"}}}},"/api/stripe/webhook":{"post":{"summary":"Idempotent Stripe webhook (HMAC verified)","responses":{"200":{"description":"Received"}}}},"/api/r/{id}":{"get":{"summary":"Preview, or full output if the job is paid","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job"}}},"delete":{"summary":"Delete my data (capability link required)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted; accounting record retained"}}}},"/api/export/{id}":{"get":{"summary":"Export JSON / Markdown / CSV","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Export"}}}},"/api/datasets/rubric/{product}.json":{"get":{"summary":"Public read-only rubric dataset","parameters":[{"name":"product","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Rubric"}}}},"/api/card/{product}":{"get":{"summary":"Allowlisted SVG share card with a bounded score","parameters":[{"name":"product","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"1200 × 630 SVG"}}}},"/api/event":{"post":{"summary":"Cookieless event (product and allowlisted kind only)","responses":{"202":{"description":"Accepted"}}}},"/api/health":{"get":{"summary":"Health check","responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"JobId":{"type":"string","pattern":"^[0-9a-f]{32}$"},"AgentJDInput":{"type":"object","required":["role_text"],"properties":{"role_text":{"type":"string","minLength":60,"maxLength":8000},"company_size":{"enum":["1-10","11-50","51-200","200+"]},"keep_titles":{"type":"boolean"}},"additionalProperties":false},"AgentJDBundleInput":{"type":"object","required":["roles"],"properties":{"roles":{"type":"array","items":{"type":"string","minLength":60,"maxLength":8000},"minItems":3,"maxItems":3}},"additionalProperties":false}}}}