{"openapi":"3.1.0","info":{"title":"Agentic Jobs API","version":"0.1.1","summary":"An agent-friendly job board. Its own listings, never scraped.","description":"Every listing on this board was posted to it. Nothing here is scraped\nfrom anywhere else, so a job you find has an employer behind it who\nchose to be here.\n\nReads need no credentials. To apply, GET the apply-schema for a job and\nPOST the answers back; the schema tells you the exact fields and whether\nthe employer wants agent-written applications disclosed.\n\nResumes are Markdown, in the OpenResume.md convention. Send one inline as\n`resume`, or reference one you have saved.","license":{"name":"MIT","identifier":"MIT"}},"servers":[{"url":"https://agenticjobs.work"}],"tags":[{"name":"jobs","description":"Search, read and post listings."},{"name":"apply","description":"The application flow an agent can complete."},{"name":"resumes","description":"Markdown resumes, created and edited over the API."},{"name":"auth","description":"Device flow for terminals, magic links for browsers."},{"name":"federation","description":"The directory of instances, and search across them."}],"paths":{"/api/v1/jobs":{"get":{"tags":["jobs"],"summary":"Search this board.","parameters":[{"name":"q","in":"query","required":false,"description":"Full text over title, description, tags and stack.","schema":{"type":"string"}},{"name":"employmentType","in":"query","required":false,"description":"full-time, part-time, contract, internship, temporary","schema":{"type":"string"}},{"name":"workplace","in":"query","required":false,"description":"remote, hybrid, onsite","schema":{"type":"string"}},{"name":"seniority","in":"query","required":false,"description":"intern, junior, mid, senior, staff, principal, lead","schema":{"type":"string"}},{"name":"agentPolicy","in":"query","required":false,"description":"welcome, disclose, human-only","schema":{"type":"string"}},{"name":"tag","in":"query","required":false,"description":"Repeatable. Matches tags and stack.","schema":{"type":"string"}},{"name":"salaryMin","in":"query","required":false,"description":"Minimum, compared against the top of each range.","schema":{"type":"integer"}},{"name":"org","in":"query","required":false,"description":"Employer slug.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"recent, relevant, salary","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1-100, default 25","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"default 0","schema":{"type":"integer"}}],"responses":{"200":{"description":"A page of jobs.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}}}}},"post":{"tags":["jobs"],"summary":"Post a job. Creates a draft unless publish is true.","security":[{"bearer":[]}],"responses":{"201":{"description":"The job as stored.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"403":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/jobs/{slug}":{"get":{"tags":["jobs"],"summary":"One job, with its description rendered and its JSON-LD.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/jobs/{slug}/apply-schema":{"get":{"tags":["apply"],"summary":"The fields to fill in, and where to send them.","description":"Start here. The response says whether this employer takes applications on the board at all, what the fields are, and whether an agent-written application has to say so.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The application schema.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/jobs/{slug}/apply":{"post":{"tags":["apply"],"summary":"Apply.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Accepted.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"429":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/jobs/{slug}/applications":{"get":{"tags":["apply"],"summary":"Applications to a job. Members of the employer only.","security":[{"bearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The applications.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"403":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/applications/drafts":{"get":{"tags":["apply"],"summary":"Applications you have prepared but not sent.","description":"An agent can prepare an application and leave it here; a person releases it. The mirror of a job posting starting as a draft.","security":[{"bearer":[]}],"responses":{"200":{"description":"Your drafts.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/applications/{id}/submit":{"post":{"tags":["apply"],"summary":"Send a draft application.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sent.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/orgs":{"get":{"tags":["jobs"],"summary":"Employers with open listings.","responses":{"200":{"description":"Employers.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/orgs/{slug}":{"get":{"tags":["jobs"],"summary":"One employer and its open listings.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The employer.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/me":{"get":{"tags":["auth"],"summary":"Who this token belongs to, with their employers and resumes.","security":[{"bearer":[]}],"responses":{"200":{"description":"The caller.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/resumes":{"get":{"tags":["resumes"],"summary":"Your resumes.","security":[{"bearer":[]}],"responses":{"200":{"description":"Resumes.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}},"post":{"tags":["resumes"],"summary":"Create one from Markdown.","security":[{"bearer":[]}],"responses":{"201":{"description":"The resume.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/resumes/{slug}":{"get":{"tags":["resumes"],"summary":"One resume, as Markdown and as HTML.","security":[{"bearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The resume.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/resumes/import":{"post":{"tags":["resumes"],"summary":"Upload a PDF, DOCX, TXT or MD and get Markdown back.","security":[{"bearer":[]}],"responses":{"201":{"description":"The converted resume.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"413":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/auth/device":{"post":{"tags":["auth"],"summary":"Start the device flow. Returns a code a human approves in a browser.","responses":{"200":{"description":"The grant.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/auth/device/poll":{"post":{"tags":["auth"],"summary":"Poll until approved. The token is handed over exactly once.","responses":{"200":{"description":"pending, approved or expired.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/directory/instances":{"get":{"tags":["federation"],"summary":"Instances this directory knows about. Directories only.","responses":{"200":{"description":"Instances.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/directory/search":{"get":{"tags":["federation"],"summary":"One search, every listed instance. Directories only.","description":"Results carry the instance they came from. An instance that fails to answer is reported in `sources` rather than silently omitted.","responses":{"200":{"description":"Merged results.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/directory/announce":{"post":{"tags":["federation"],"summary":"Announce an instance. Send only its URL; the directory reads the rest itself.","responses":{"200":{"description":"The listing.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"403":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}},"404":{"description":"An error with a message you can act on.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}}}}}}}}}}}},"/api/v1/stats":{"get":{"tags":["jobs"],"summary":"Open and total counts for this board.","responses":{"200":{"description":"Counts.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/agenticjobs":{"get":{"tags":["federation"],"summary":"This instance, described. The federation contract.","responses":{"200":{"description":"The descriptor.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"A token from the device flow."}},"schemas":{"Job":{"type":"object","required":["id","slug","title","org","agentPolicy","apply"],"properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","description":"Markdown."},"employmentType":{"type":"string"},"workplace":{"type":"string","enum":["remote","hybrid","onsite"]},"seniority":{"type":"string","nullable":true},"agentPolicy":{"type":"string","enum":["welcome","disclose","human-only"],"description":"Where the employer stands on applications written with an agent. Required on every listing, because the alternative is finding out by silent rejection."},"apply":{"type":"object"},"tags":{"type":"array","items":{"type":"string"}},"stack":{"type":"array","items":{"type":"string"}}}}}}}