Worklittle Jobs API

The consumer Jobs surface of the Worklittle API — 9 operations for market-wide job search, job detail, map clusters, suggestions, company search, market stats, account and profile resume upload.

Operations 9

GET /jobs Search jobs #
GET /jobs/search Search jobs #
GET /jobs/{id} Get job by id #
GET /jobs/map Jobs map clusters #
GET /jobs/stats Market overview stats #
GET /jobs/suggestions Search jobs #
GET /companies Search companies #
GET /account Authenticated API key owner #
PUT /account/resume Upload profile resume (API key) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/worklittle-jobs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

worklittle-jobs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Worklittle Jobs API
  version: 1.0.0
  description: 'Consumer Jobs surface of the Worklittle API: market-wide job search, job detail, map clusters, company search, market stats, account, and profile resume upload. Resolved from the provider''s $ref-based root spec at https://docs.worklittle.com/openapi/openapi.yaml (paths/jobs.yaml fragments). Authenticate with Authorization: Bearer sk-wl-api01-....'
servers:
- url: https://api.worklittle.com
security:
- bearerAuth: []
tags:
- name: Jobs
paths:
  /jobs:
    get:
      tags:
      - Jobs
      summary: Search jobs
      description: 'List and search open jobs. Default order is newest first (posted_at).


        When `near_lat` and `near_lng` are set, optional `sort` is:

        - omit / `distance` — closest first (default)

        - `newest` — posted_at descending

        - `salary` — listed annualized pay descending, missing pay last


        When `company` is a single slug, optional `sort` controls company-board order:

        - `newest` (default) — posted_at descending

        - `oldest` — posted_at ascending

        - `relevance` — full company result set ranked by title match to `q` (or `title`);

        does **not** filter. Classic filtered search remains `company` + `q` without

        `sort=relevance`.


        Omit `sort` for vanilla behavior (recommended for MCP and generic clients).'
      security:
      - bearerAuth: []
      parameters:
      - name: q
        in: query
        schema:
          type: string
        description: Search string. With company+sort=relevance
        ranks titles instead of filtering.: null
      - name: title
        in: query
        schema:
          type: string
        description: Title-only substring filter (or ranking key with sort=relevance).
      - name: company
        in: query
        schema:
          type: string
        description: Exact company slug(s). Bare comma-separated = OR include (meta,google). Prefix with - to exclude (-lucid-motors,-tesla). Mix allowed.
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - newest
          - oldest
          - relevance
          - distance
          - salary
        description: Near lists — distance (default, omit) | newest | salary. Company lists (single slug) — newest | oldest | relevance (relevance requires q or title).
      - name: limit
        in: query
        schema:
          type: integer
      - name: cursor
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Job search results
      operationId: getJobs
      x-operation-id-source: derived
  /jobs/search:
    get:
      tags:
      - Jobs
      summary: Search jobs
      description: 'List and search open jobs. Default order is newest first (posted_at).


        When `near_lat` and `near_lng` are set, optional `sort` is:

        - omit / `distance` — closest first (default)

        - `newest` — posted_at descending

        - `salary` — listed annualized pay descending, missing pay last


        When `company` is a single slug, optional `sort` controls company-board order:

        - `newest` (default) — posted_at descending

        - `oldest` — posted_at ascending

        - `relevance` — full company result set ranked by title match to `q` (or `title`);

        does **not** filter. Classic filtered search remains `company` + `q` without

        `sort=relevance`.


        Omit `sort` for vanilla behavior (recommended for MCP and generic clients).'
      security:
      - bearerAuth: []
      parameters:
      - name: q
        in: query
        schema:
          type: string
        description: Search string. With company+sort=relevance
        ranks titles instead of filtering.: null
      - name: title
        in: query
        schema:
          type: string
        description: Title-only substring filter (or ranking key with sort=relevance).
      - name: company
        in: query
        schema:
          type: string
        description: Exact company slug(s). Bare comma-separated = OR include (meta,google). Prefix with - to exclude (-lucid-motors,-tesla). Mix allowed.
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - newest
          - oldest
          - relevance
          - distance
          - salary
        description: Near lists — distance (default, omit) | newest | salary. Company lists (single slug) — newest | oldest | relevance (relevance requires q or title).
      - name: limit
        in: query
        schema:
          type: integer
      - name: cursor
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Job search results
      operationId: getJobsSearch
      x-operation-id-source: derived
  /jobs/{id}:
    get:
      tags:
      - Jobs
      summary: Get job by id
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: summary
        in: query
        schema:
          type: string
          enum:
          - 'true'
          - '1'
          - 'yes'
        description: Opt in to first-time AI job-description generation. Omit for raw description_text plus any already-cached AI.
      responses:
        '200':
          description: Job detail
      operationId: getJobsById
      x-operation-id-source: derived
  /jobs/map:
    get:
      tags:
      - Jobs
      summary: Jobs map clusters
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Map payload
      operationId: getJobsMap
      x-operation-id-source: derived
  /jobs/stats:
    get:
      tags:
      - Jobs
      summary: Market overview stats
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Stats
      operationId: getJobsStats
      x-operation-id-source: derived
  /jobs/suggestions:
    get:
      tags:
      - Jobs
      summary: Search jobs
      description: 'List and search open jobs. Default order is newest first (posted_at).


        When `near_lat` and `near_lng` are set, optional `sort` is:

        - omit / `distance` — closest first (default)

        - `newest` — posted_at descending

        - `salary` — listed annualized pay descending, missing pay last


        When `company` is a single slug, optional `sort` controls company-board order:

        - `newest` (default) — posted_at descending

        - `oldest` — posted_at ascending

        - `relevance` — full company result set ranked by title match to `q` (or `title`);

        does **not** filter. Classic filtered search remains `company` + `q` without

        `sort=relevance`.


        Omit `sort` for vanilla behavior (recommended for MCP and generic clients).'
      security:
      - bearerAuth: []
      parameters:
      - name: q
        in: query
        schema:
          type: string
        description: Search string. With company+sort=relevance
        ranks titles instead of filtering.: null
      - name: title
        in: query
        schema:
          type: string
        description: Title-only substring filter (or ranking key with sort=relevance).
      - name: company
        in: query
        schema:
          type: string
        description: Exact company slug(s). Bare comma-separated = OR include (meta,google). Prefix with - to exclude (-lucid-motors,-tesla). Mix allowed.
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - newest
          - oldest
          - relevance
          - distance
          - salary
        description: Near lists — distance (default, omit) | newest | salary. Company lists (single slug) — newest | oldest | relevance (relevance requires q or title).
      - name: limit
        in: query
        schema:
          type: integer
      - name: cursor
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Job search results
      operationId: getJobsSuggestions
      x-operation-id-source: derived
  /companies:
    get:
      tags:
      - Jobs
      summary: Search companies
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Companies
      operationId: getCompanies
      x-operation-id-source: derived
  /account:
    get:
      tags:
      - Jobs
      summary: Authenticated API key owner
      description: Returns the email, display name, photo, and resume readiness for the Bearer API key owner. Used by MCP Apps for account rows and Apply resume gate.
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Account identity
          content:
            application/json:
              schema:
                type: object
                properties:
                  email:
                    type: string
                  user_id:
                    type: string
                    nullable: true
                  name:
                    type: string
                    nullable: true
                  display_name:
                    type: string
                    nullable: true
                  photo_url:
                    type: string
                    nullable: true
                  key_prefix:
                    type: string
                    nullable: true
                  has_resume_file:
                    type: boolean
                  resume_file_name:
                    type: string
                    nullable: true
      operationId: getAccount
      x-operation-id-source: derived
  /account/resume:
    put:
      tags:
      - Jobs
      summary: Upload profile resume (API key)
      description: Upload a resume for the API key owner. JSON body with content_base64, or raw bytes with Content-Type and X-Filename. Scope jobs:apply.
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - filename
              - content_base64
              properties:
                filename:
                  type: string
                mime:
                  type: string
                content_base64:
                  type: string
      responses:
        '200':
          description: Resume stored
      operationId: putAccountResume
      x-operation-id-source: derived
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: sk-wl-api01