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

# Apply to a job

> Start a workflow run that applies to a job with a résumé and optional credentials.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/recipes/jobs/apply
openapi: 3.1.0
info:
  title: Skyvern API
  description: API for Skyvern
  version: 1.0.0
servers:
  - url: https://api.skyvern.com
    x-fern-server-name: Cloud
  - url: https://api-staging.skyvern.com
    x-fern-server-name: Staging
  - url: http://localhost:8000
    x-fern-server-name: Local
security: []
paths:
  /v1/recipes/jobs/apply:
    post:
      tags:
        - Recipes
      summary: Apply to a job
      description: >-
        Start a workflow run that applies to a job with a résumé and optional
        credentials.
      operationId: apply_to_job_v1_recipes_jobs_apply_post
      requestBody:
        content:
          application/json:
            schema:
              properties:
                webhook_url:
                  anyOf:
                    - type: string
                    - type: 'null'
                  format: uri
                  title: Webhook Url
                  description: >-
                    After a run is finished, send an update to this URL. Refer
                    to https://www.skyvern.com/docs/running-tasks/webhooks-faq
                    for more details.
                  examples:
                    - https://my-site.com/webhook
                proxy_location:
                  anyOf:
                    - $ref: '#/components/schemas/ProxyLocation'
                    - $ref: '#/components/schemas/GeoTarget'
                    - additionalProperties: true
                      type: object
                    - type: 'null'
                  title: Proxy Location
                  description: >-
                    Geographic Proxy location to route the browser traffic
                    through. This is only available in Skyvern Cloud.


                    Available geotargeting options:

                    - RESIDENTIAL: the default value. Skyvern Cloud uses a
                    random US residential proxy.

                    - RESIDENTIAL_ES: Spain

                    - RESIDENTIAL_IE: Ireland

                    - RESIDENTIAL_GB: United Kingdom

                    - RESIDENTIAL_IN: India

                    - RESIDENTIAL_JP: Japan

                    - RESIDENTIAL_FR: France

                    - RESIDENTIAL_DE: Germany

                    - RESIDENTIAL_NZ: New Zealand

                    - RESIDENTIAL_PH: Philippines

                    - RESIDENTIAL_KR: South Korea

                    - RESIDENTIAL_SA: Saudi Arabia

                    - RESIDENTIAL_ZA: South Africa

                    - RESIDENTIAL_AR: Argentina

                    - RESIDENTIAL_AU: Australia

                    - RESIDENTIAL_BR: Brazil

                    - RESIDENTIAL_TR: Turkey

                    - RESIDENTIAL_CA: Canada

                    - RESIDENTIAL_MX: Mexico

                    - RESIDENTIAL_IT: Italy

                    - RESIDENTIAL_NL: Netherlands

                    - RESIDENTIAL_ISP: ISP proxy

                    - US-CA: California (deprecated, routes through
                    RESIDENTIAL_ISP)

                    - US-NY: New York (deprecated, routes through
                    RESIDENTIAL_ISP)

                    - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP)

                    - US-FL: Florida (deprecated, routes through
                    RESIDENTIAL_ISP)

                    - US-WA: Washington (deprecated, routes through
                    RESIDENTIAL_ISP)

                    - NONE: No proxy


                    For self-hosted deployments, you can pass a custom proxy URL
                    as a dict: {"url":
                    "http://user:password@proxy.example.com:8080"}. This routes
                    the browser through your own proxy server and takes
                    precedence over any globally configured proxy pool. Can also
                    be a GeoTarget object for granular city/state targeting:
                    {"country": "US", "subdivision": "CA", "city": "San
                    Francisco"}. Omit it or send null to use the default;
                    Skyvern Cloud then uses RESIDENTIAL.
                job_url:
                  type: string
                  format: uri
                  title: Job Url
                custom_prompt:
                  type: string
                  title: Custom Prompt
                resume_url:
                  type: string
                  format: uri
                  title: Resume Url
                other_information:
                  title: Other Information
                terminate_criterion:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: Terminate Criterion
                  description: >-
                    Condition that stops Apply. Omit to use the recipe default;
                    null or empty text disables it.
                  default: >-
                    Terminate when the requested job posting explicitly states
                    that it is expired, closed, filled, or no longer accepting
                    applications. A missing Apply button, redirect, or HTTP 404
                    alone is insufficient.
                error_code_mapping:
                  anyOf:
                    - additionalProperties:
                        type: string
                      type: object
                    - type: 'null'
                  title: Error Code Mapping
                  description: >-
                    Error codes and descriptions. Omit for the recipe default;
                    null or {} disables mapping. A supplied mapping replaces the
                    default independently of terminate_criterion.
                  default:
                    job_expired: >-
                      The requested job posting explicitly states that it is
                      expired, closed, filled, or no longer accepting
                      applications.
                username:
                  anyOf:
                    - type: string
                      minLength: 1
                    - type: 'null'
                  title: Username
                password:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: Password
                persist_credentials:
                  anyOf:
                    - type: boolean
                    - type: 'null'
                  title: Persist Credentials
                2fa_identifier:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: 2Fa Identifier
              additionalProperties: false
              type: object
              required:
                - job_url
                - custom_prompt
                - resume_url
              title: JobRecipeApplyJSONRequest
          multipart/form-data:
            schema:
              properties:
                job_url:
                  type: string
                  format: uri
                  title: Job Url
                custom_prompt:
                  type: string
                  title: Custom Prompt
                resume_file:
                  type: string
                  format: binary
                  title: Resume File
                webhook_url:
                  anyOf:
                    - type: string
                    - type: 'null'
                  format: uri
                  title: Webhook Url
                  description: >-
                    After a run is finished, send an update to this URL. Refer
                    to https://www.skyvern.com/docs/running-tasks/webhooks-faq
                    for more details.
                proxy_location:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: Proxy Location
                  description: >-
                    A ProxyLocation name such as RESIDENTIAL_GB, or JSON text
                    for a GeoTarget or custom proxy object. Omit it or send
                    blank text to use the default; Skyvern Cloud then uses
                    RESIDENTIAL.
                other_information:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: Other Information
                terminate_criterion:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: Terminate Criterion
                  description: >-
                    Condition that stops Apply. Omit for the recipe default;
                    empty text disables it.
                  default: >-
                    Terminate when the requested job posting explicitly states
                    that it is expired, closed, filled, or no longer accepting
                    applications. A missing Apply button, redirect, or HTTP 404
                    alone is insufficient.
                error_code_mapping:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: Error Code Mapping
                  description: >-
                    JSON text containing an object of error codes and
                    descriptions. Omit for the recipe default; JSON null or {}
                    disables mapping. A supplied mapping replaces the default
                    independently of terminate_criterion.
                  default: >-
                    {"job_expired": "The requested job posting explicitly states
                    that it is expired, closed, filled, or no longer accepting
                    applications."}
                username:
                  anyOf:
                    - type: string
                      minLength: 1
                    - type: 'null'
                  title: Username
                password:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: Password
                persist_credentials:
                  anyOf:
                    - type: string
                      pattern: ^true$
                    - type: 'null'
                  title: Persist Credentials
                2fa_identifier:
                  anyOf:
                    - type: string
                    - type: 'null'
                  title: 2Fa Identifier
              additionalProperties: false
              type: object
              required:
                - job_url
                - custom_prompt
                - resume_file
              title: JobRecipeApplyMultipartRequest
              description: >-
                OpenAPI representation of the text and file parts accepted by
                Apply.
        required: true
      responses:
        '200':
          description: Successfully started job application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobRecipeRunResponse'
        '400':
          description: Invalid multipart structure
        '402':
          description: Insufficient credits or required billing state
        '403':
          description: Unauthorized or insufficient organization permission
        '413':
          description: Résumé file exceeds the upload limit
        '422':
          description: Invalid apply request
        '429':
          description: Workflow submission rate limit exceeded
        '500':
          description: Upload or workflow launch failed
        '502':
          description: Credential service failed
      security:
        - ApiKeyAuth: []
components:
  schemas:
    ProxyLocation:
      type: string
      enum:
        - RESIDENTIAL
        - US-CA
        - US-NY
        - US-TX
        - US-FL
        - US-WA
        - RESIDENTIAL_ES
        - RESIDENTIAL_IE
        - RESIDENTIAL_GB
        - RESIDENTIAL_IN
        - RESIDENTIAL_JP
        - RESIDENTIAL_FR
        - RESIDENTIAL_DE
        - RESIDENTIAL_NZ
        - RESIDENTIAL_ZA
        - RESIDENTIAL_AR
        - RESIDENTIAL_AU
        - RESIDENTIAL_BR
        - RESIDENTIAL_TR
        - RESIDENTIAL_CA
        - RESIDENTIAL_MX
        - RESIDENTIAL_IT
        - RESIDENTIAL_NL
        - RESIDENTIAL_PH
        - RESIDENTIAL_KR
        - RESIDENTIAL_SA
        - RESIDENTIAL_ISP
        - NONE
      title: ProxyLocation
    GeoTarget:
      properties:
        country:
          type: string
          maxLength: 2
          minLength: 2
          title: Country
          description: ISO 3166-1 alpha-2 country code (e.g., 'US', 'GB', 'DE')
          examples:
            - US
            - GB
            - DE
            - FR
        subdivision:
          anyOf:
            - type: string
              maxLength: 10
            - type: 'null'
          title: Subdivision
          description: >-
            ISO 3166-2 subdivision code without country prefix (e.g., 'CA' for
            California, 'NY' for New York)
          examples:
            - CA
            - NY
            - TX
            - ENG
        city:
          anyOf:
            - type: string
              maxLength: 100
            - type: 'null'
          title: City
          description: >-
            City name in English from GeoNames (e.g., 'New York', 'Los Angeles',
            'London')
          examples:
            - New York
            - Los Angeles
            - London
            - Berlin
        isISP:
          type: boolean
          title: Isisp
          description: Whether this geo target is marked as an ISP proxy location.
          default: false
      type: object
      required:
        - country
      title: GeoTarget
      description: >-
        Granular proxy geo-targeting request with country, optional subdivision,
        and optional city.
    JobRecipeRunResponse:
      properties:
        workflow_run_id:
          type: string
          pattern: ^wr_
          title: Workflow Run Id
      additionalProperties: false
      type: object
      required:
        - workflow_run_id
      title: JobRecipeRunResponse
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: Your Skyvern API key from https://app.skyvern.com/settings.
      in: header
      name: x-api-key

````

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