{"openapi":"3.1.0","info":{"title":"Cognatory Resume PDF API","version":"0.2.0-preview","description":"Free for accounts created through /cyber when authorized with a Vector agent token or an OAuth access token with vector:write. Free PDFs render in the account holder's Cloudflare account and need no payment, Stripe account, or subscription. Paid requests without an eligible Vector token are not open yet; the planned price is $0.10 USD per PDF in USDC.e on Tempo through MPP, plus network fees. Resume JSON and generated PDFs are not stored."},"servers":[{"url":"https://cognatory.com"}],"externalDocs":{"url":"https://cognatory.com/resume-pdf"},"x-availability":{"freeAccounts":"available","paidRequests":"preview"},"x-free-access":{"signupUrl":"https://cognatory.com/cyber","tokenInstructionsUrl":"https://cognatory.com/resume-pdf#free-access","price":"0"},"x-payment":{"appliesTo":"Separate requests without eligible free Vector bearer access","protocol":"MPP","amount":"0.10","currency":"USD","paymentType":"stablecoin","token":"USDC.e","network":"Tempo","billing":"per-request"},"paths":{"/vector/api/resume-pdf":{"post":{"operationId":"renderResumePdf","summary":"Render supplied resume JSON as a PDF","description":"Send one UTF-8 JSON object containing resume. Maximum request size: 100,000 bytes. Maximum pages: 4. The renderer uses only supplied content. An eligible /cyber account's Vector bearer token renders free without an Idempotency-Key or payment. Browser cookies alone do not authorize free access. Once paid requests open, other clients can follow the MPP challenge and retry with identical JSON bytes, the same Idempotency-Key, and its payment credential. Paid retry receipts expire after 30 days; use a new key after that window.","security":[{"VectorBearer":[]},{"MppPayment":[]}],"parameters":[{"in":"header","name":"Idempotency-Key","required":false,"description":"Required for the paid MPP flow; not required for eligible free bearer requests. Use a unique key such as a UUID and reuse it with byte-identical JSON when retrying payment or retrieving the paid result. Use a new key after the 30-day paid retry window.","schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{16,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"https://cognatory.com/resume-pdf/schema.json"},"example":{"resume":{"name":"Example Applicant","email":"applicant@example.test","subtitle":"Research Software Engineer","summary":"Builds clear, documented software for research teams.","links":["https://example.com/portfolio"],"sections":["summary","experience","education"],"pages":2,"typography":"refined","experience":[{"role":"Software Engineer","company":"Example Research Studio","dates":"2023 - 2026","bullets":["Built and documented TypeScript tools for a research team."]}],"education":[{"degree":"BS, Computer Science","school":"Example University","dates":"2023"}]}}}}},"responses":{"200":{"description":"The generated resume PDF, returned free for an eligible authenticated account or after successful MPP payment. Save the response bytes as a PDF file.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid JSON or unsupported resume input."},"401":{"description":"The Vector bearer token is invalid or expired."},"402":{"description":"An MPP stablecoin payment is required once paid requests are open. Use the returned challenge; do not guess payment destinations or amounts.","headers":{"WWW-Authenticate":{"description":"Machine Payments Protocol payment challenge.","schema":{"type":"string"}}}},"403":{"description":"The authenticated account is not eligible for free API access, or its OAuth token lacks vector:write."},"409":{"description":"The idempotency key conflicts with another request or the request is already being processed."},"413":{"description":"The request exceeds a documented input limit."},"422":{"description":"The resume cannot fit or contains content the renderer cannot represent. Revise the request before trying again."},"429":{"description":"Rendering is busy. Retry later."},"503":{"description":"The account's PDF service is not ready, rendering is temporarily unavailable, or paid requests are not open yet. No PDF is returned."}}}}},"components":{"securitySchemes":{"VectorBearer":{"type":"http","scheme":"bearer","bearerFormat":"Vector agent token or OAuth access token","description":"For accounts created through /cyber: open Agent access in Vector, choose Create 24-hour agent token, and copy the token. An existing Vector OAuth access token with vector:write is also accepted. Keep this credential private; it also permits application access. Browser cookies alone are insufficient."},"MppPayment":{"type":"http","scheme":"Payment","description":"A payment credential responding to the server's MPP challenge. This is separate from Vector workspace OAuth."}}}}