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

# Read a job posting

> Reads a job link or pasted posting text into role, company, location, salary and requirements, and returns the posting text to save with the application. Links must be public https pages. Without an AI provider, only a page's own job data (JSON-LD) fills the fields. Requires authentication.



## OpenAPI

````yaml /spec.json post /applications/ai/posting-parses
openapi: 3.1.1
info:
  title: Reactive Resume
  version: 6.0.0
  description: >-
    Reactive Resume API. Mutations do not support Idempotency-Key. Do not
    automatically retry POST, PUT, PATCH or DELETE requests after a timeout:
    first read the resource to determine whether the operation succeeded.
    Existing enum values and response shapes are retained for compatibility.
  license:
    name: MIT
    url: https://github.com/reactive-resume/reactive-resume/blob/main/LICENSE
  contact:
    name: Amruth Pillai
    email: hello@amruthpillai.com
    url: https://amruthpillai.com
servers:
  - url: https://rxresu.me/api/openapi
security:
  - apiKey: []
  - bearerAuth: []
  - cookieAuth: []
externalDocs:
  url: https://docs.rxresu.me
  description: Reactive Resume Documentation
paths:
  /applications/ai/posting-parses:
    post:
      tags:
        - Applications
        - AI
      summary: Read a job posting
      description: >-
        Reads a job link or pasted posting text into role, company, location,
        salary and requirements, and returns the posting text to save with the
        application. Links must be public https pages. Without an AI provider,
        only a page's own job data (JSON-LD) fills the fields. Requires
        authentication.
      operationId: createPostingParse
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  type: string
                  minLength: 1
                  maxLength: 100000
              required:
                - input
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  role:
                    type: string
                  company:
                    type: string
                  location:
                    type: string
                  salary:
                    type: string
                  requirements:
                    type: array
                    items:
                      type: string
                    description: What the posting asks for, one short item each.
                  jobDescription:
                    type: string
                    description: The posting's text, to save with the application.
                  sourceUrl:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: The link, when a link was given.
                  postingSource:
                    type: object
                    properties:
                      method:
                        enum:
                          - paste
                          - builtin
                          - firecrawl
                          - tavily
                          - exa
                        type: string
                      format:
                        enum:
                          - text
                          - markdown
                        type: string
                      requestedUrl:
                        type: string
                        format: uri
                      resolvedUrl:
                        type: string
                        format: uri
                      retrievedAt:
                        type: string
                        format: date-time
                      providerFetchedAt:
                        type: string
                        format: date-time
                      truncated:
                        type: boolean
                      completeness:
                        enum:
                          - unknown
                          - incomplete
                        type: string
                      fallbackReason:
                        enum:
                          - unsafe-url
                          - unreachable
                          - not-a-page
                          - too-large
                          - auth
                          - quota
                          - malformed
                          - empty
                          - challenge
                          - timeout
                          - unavailable
                          - rate-limit
                        type: string
                    required:
                      - method
                      - format
                      - truncated
                      - completeness
                  enrichmentWarning:
                    anyOf:
                      - enum:
                          - ai-unavailable
                        type: string
                      - type: 'null'
                  filledBy:
                    enum:
                      - ai
                      - page
                      - none
                    type: string
                    description: >-
                      What filled the fields: the AI provider, the page's own
                      job data, or nothing (fill them in).
                required:
                  - role
                  - company
                  - location
                  - salary
                  - requirements
                  - jobDescription
                  - sourceUrl
                  - postingSource
                  - enrichmentWarning
                  - filledBy
        '400':
          description: '400'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: BAD_REQUEST
                      status:
                        const: 400
                      message:
                        type: string
                        default: Invalid application or AI request.
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '422':
          description: '422'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: POSTING_UNREADABLE
                      status:
                        const: 422
                      message:
                        type: string
                        default: >-
                          That link couldn't be read. Paste the posting text
                          instead.
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '429':
          description: '429'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: RATE_LIMIT_EXCEEDED
                      status:
                        const: 429
                      message:
                        type: string
                        default: Too many web requests. Try again later.
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '502':
          description: '502'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: BAD_GATEWAY
                      status:
                        const: 502
                      message:
                        type: string
                        default: The AI provider returned an error or is unreachable.
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        default:
          description: >-
            Structured API error. See status and code; do not branch on message
            text.
          content:
            application/json:
              schema:
                type: object
                required:
                  - defined
                  - code
                  - status
                  - message
                properties:
                  defined:
                    type: boolean
                  code:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                  data: {}
      security:
        - apiKey: []
        - bearerAuth: []
        - cookieAuth: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      name: x-api-key
      in: header
      description: The API key to authenticate requests.
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: An OAuth access token issued by this instance for its API/MCP resource.
    cookieAuth:
      type: apiKey
      in: cookie
      name: better-auth.session_token
      description: >-
        Browser session (secure deployments use the __Secure- prefix). Cookie
        requests must originate from this instance.

````

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