> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hotfix.jobs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Call them jobs, not postings, listings, or roles.
> To act for an employer, connect to the MCP server at https://mcp.hotfix.jobs/hiring and sign in with a Hotfix account. API keys are for HTTP scripts, not MCP.
> Only describe the routes, tools, and numbers these docs publish. If something isn't documented, say so instead of guessing.
> Webhooks are managed in the app under Settings > API > Webhooks. An API key or MCP client can't create or change them.
> Hotfix is the applicant tracking system. Applications land in Applicants in Hotfix and aren't sent to another ATS.
> Creating a draft, offer, or booking link sends nothing. A person sends the email from Hotfix.

# Extract requirements

> The requirements a job description lists, read the same way Hotfix reads an ingested posting's. Nothing is saved; edit them, then send `requirements` on Create a job or Update a job.

A count of years comes back as the work it stands for (`rewritten: years`), and several things in one as one each (`rewritten: split`). A line the description lists that can't be a requirement comes back in `left_out` with why: `trait`, `vague`, `submitted`, `circumstance`, `protected`, or `too_long` when its requirement runs past 140 characters. Nice-to-haves and responsibilities are neither.

Shares the 20 calls a minute per company of Suggest requirements. 503 when no extraction is available.



## OpenAPI

````yaml /openapi.json post /v1/employer/jobs/requirements/extract
openapi: 3.1.0
info:
  title: Hotfix hiring API
  version: 1.0.0
  description: >-
    Employer hiring surface under /v1/employer, plus the public company and job
    reads a company builds its own careers page from. Routes take an employer
    session Bearer token. Hiring data routes also accept a company API key
    (hf_…); mail and drafts are session only. Agents should prefer MCP at
    https://mcp.hotfix.jobs/hiring, where they sign in with Hotfix. It is not a
    dump of api.hotfix.jobs/openapi.json.
servers:
  - url: https://api.hotfix.jobs
    description: Production
security: []
tags:
  - name: Applications
  - name: Jobs
  - name: Careers page
  - name: Interviews
  - name: Offers
  - name: Mail
  - name: Automations
  - name: Fields
paths:
  /v1/employer/jobs/requirements/extract:
    post:
      tags:
        - Jobs
      summary: Extract requirements
      description: >-
        The requirements a job description lists, read the same way Hotfix reads
        an ingested posting's. Nothing is saved; edit them, then send
        `requirements` on Create a job or Update a job.


        A count of years comes back as the work it stands for (`rewritten:
        years`), and several things in one as one each (`rewritten: split`). A
        line the description lists that can't be a requirement comes back in
        `left_out` with why: `trait`, `vague`, `submitted`, `circumstance`,
        `protected`, or `too_long` when its requirement runs past 140
        characters. Nice-to-haves and responsibilities are neither.


        Shares the 20 calls a minute per company of Suggest requirements. 503
        when no extraction is available.
      operationId: extract_requirements
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: Optional. The job title.
                description:
                  type: string
                  description: The job description, in markdown.
              required:
                - description
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  requirements:
                    type: array
                    description: >-
                      Up to 10, in the description's order. Empty when it lists
                      none.
                    items:
                      type: object
                      properties:
                        requirement:
                          type: string
                        line:
                          type: string
                          description: The line of the description it came from.
                        rewritten:
                          type: string
                          enum:
                            - years
                            - split
                          description: How it differs from its line, when it does.
                  left_out:
                    type: array
                    description: >-
                      Lines the description lists as required that a resume line
                      can't show.
                    items:
                      type: object
                      properties:
                        line:
                          type: string
                        reason:
                          type: string
                          enum:
                            - trait
                            - vague
                            - submitted
                            - circumstance
                            - protected
                            - too_long
              example:
                requirements:
                  - requirement: Shipped Go code that runs in production
                    line: '- 5+ years of Go'
                    rewritten: years
                left_out:
                  - line: '- Strong communicator'
                    reason: trait
      security:
        - ApiKey: []
        - BearerAuth: []
components:
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        Company API key minted at Settings → API. Prefix hf_. Accepted on hiring
        data routes. Not accepted on MCP.
    BearerAuth:
      type: http
      scheme: bearer
      description: Employer session JWT from Better Auth.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.