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

# Retrieve a bulk feed of jobs from your watchlist companies

> Same batch shape and cursor semantics as `POST /api/jobs/feed`, but
returns only jobs from companies on your account's **Company
Watchlist** (managed in the Jobo portal). Requires a customer API key —
sandbox and marketplace keys have no watchlist and receive `403`.

Differences from the main feed:
- The `locations` filter is not supported on this endpoint.
- `created_at` reflects the exact ingestion time (the main feed reports
  indexing time for jobs younger than 24 hours).




## OpenAPI

````yaml /openapi.yaml post /api/jobs/feed/watchlist
openapi: 3.1.0
info:
  title: Jobo Enterprise API
  description: >
    The Jobo Enterprise API provides programmatic access to job listings,
    intelligent search,

    real-time feeds, automated job applications, and geocoding services.
  version: 1.1.0
  contact:
    name: Jobo Support
    url: https://jobo.world
    email: support@jobo.world
servers:
  - url: https://connect.jobo.world
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Jobs Search
    description: Search and retrieve job listings
  - name: Jobs Feed
    description: Bulk job feeds and expiration tracking
  - name: Career Sites Feed
    description: Bulk feed of newly discovered career sites with enriched company profiles
  - name: Companies
    description: Company profiles and company-scoped job listings
  - name: Auto Apply Profiles
    description: Resume-first applicant profiles that power automated applications
  - name: Auto Apply Applications
    description: >-
      Fully automated job applications — submit asynchronously and poll for the
      outcome
  - name: Auto Apply Sessions
    description: Interactive, step-by-step application sessions with full answer control
  - name: Locations
    description: Geocoding and location services
paths:
  /api/jobs/feed/watchlist:
    post:
      tags:
        - Jobs Feed
      summary: Retrieve a bulk feed of jobs from your watchlist companies
      description: |
        Same batch shape and cursor semantics as `POST /api/jobs/feed`, but
        returns only jobs from companies on your account's **Company
        Watchlist** (managed in the Jobo portal). Requires a customer API key —
        sandbox and marketplace keys have no watchlist and receive `403`.

        Differences from the main feed:
        - The `locations` filter is not supported on this endpoint.
        - `created_at` reflects the exact ingestion time (the main feed reports
          indexing time for jobs younger than 24 hours).
      operationId: getWatchlistJobFeed
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WatchlistFeedRequest'
      responses:
        '200':
          description: Batch of jobs from watchlist companies with cursor for next page
          headers:
            X-Has-More:
              schema:
                type: boolean
              description: Duplicates response body `has_more` for quick checks.
            X-Credits-Deducted:
              schema:
                type: integer
              description: |
                Credits debited for this request. Absent for callers whose plan
                includes the feed or whose key bypasses wallet debits.
            X-Credits-Balance:
              schema:
                type: integer
              description: Remaining credit balance after this call (when debit applied).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobFeedResponse'
        '400':
          description: |
            Invalid request — batch_size out of range, malformed cursor, or the
            watchlist resolves to more companies than the endpoint supports.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: |
            The credential is valid but carries no customer account (sandbox or
            marketplace key) — the watchlist feed requires a customer API key
            whose account has a watchlist configured in the Jobo portal.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    WatchlistFeedRequest:
      type: object
      description: |
        Filters for the watchlist-scoped jobs feed. Note there is no
        `locations` filter on this endpoint.
      properties:
        sources:
          type: array
          items:
            type: string
          nullable: true
          description: >-
            ATS/job source identifiers (e.g. "greenhouse", "lever", "workday").
            Job matches ANY provided source.
        work_models:
          type: array
          items:
            type: string
            enum:
              - remote
              - hybrid
              - onsite
          nullable: true
          description: 'Filter by work model: remote, hybrid, onsite. null = all jobs'
        posted_after:
          type: string
          format: date-time
          nullable: true
          description: Only return jobs posted after this date
        updated_after:
          type: string
          format: date-time
          nullable: true
          description: |
            Only return jobs created or updated after this UTC timestamp —
            incremental watermark for syncs.
        cursor:
          type: string
          nullable: true
        batch_size:
          type: integer
          default: 1000
          minimum: 1
          maximum: 1000
    JobFeedResponse:
      type: object
      properties:
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/JobDto'
        next_cursor:
          type: string
          nullable: true
        has_more:
          type: boolean
    ProblemDetails:
      type: object
      description: RFC 7807 problem details object returned for error responses.
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
    JobDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
        normalized_title:
          type: string
          nullable: true
        company:
          $ref: '#/components/schemas/JobCompanyDto'
        description:
          type: string
        summary:
          type: string
          nullable: true
        listing_url:
          type: string
        apply_url:
          type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/JobLocationDto'
        compensation:
          oneOf:
            - $ref: '#/components/schemas/JobCompensationDto'
          nullable: true
        employment_type:
          type: string
          nullable: true
          enum:
            - Full-time
            - Part-time
            - Contract
            - Internship
            - Freelance
            - Temporary
            - null
        workplace_type:
          type: string
          nullable: true
          enum:
            - Remote
            - Hybrid
            - On-site
            - null
        experience_level:
          type: string
          nullable: true
          enum:
            - Intern
            - Entry Level
            - Mid Level
            - Senior
            - Lead
            - Executive
            - null
        source:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        date_posted:
          type: string
          format: date-time
          nullable: true
        valid_through:
          type: string
          format: date-time
          nullable: true
        qualifications:
          $ref: '#/components/schemas/JobQualificationsDto'
        responsibilities:
          type: array
          items:
            type: string
        benefits:
          type: array
          items:
            type: string
        is_work_auth_required:
          type: boolean
          nullable: true
        is_h1b_sponsor:
          type: boolean
          nullable: true
        is_clearance_required:
          type: boolean
          nullable: true
    JobCompanyDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        website:
          type: string
          nullable: true
        logo_url:
          type: string
          nullable: true
        summary:
          type: string
          nullable: true
        industries:
          type: array
          items:
            type: string
          description: Industry tags (typically 1-3) describing what the company does.
        categories:
          type: array
          items:
            type: string
          description: Business-model bucket tags (b2b / b2c / saas / service-provider).
        linkedin_url:
          type: string
          nullable: true
        crunchbase_url:
          type: string
          nullable: true
        details_url:
          type: string
          nullable: true
          description: |
            Public URL to the full company profile endpoint
            (`GET https://connect.jobo.world/api/companies/{id}`).
            Null when `id` is empty.
    JobLocationDto:
      type: object
      properties:
        location:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        region:
          type: string
          nullable: true
        country:
          type: string
          nullable: true
        latitude:
          type: number
          format: double
          nullable: true
        longitude:
          type: number
          format: double
          nullable: true
    JobCompensationDto:
      type: object
      properties:
        min:
          type: number
          format: decimal
          nullable: true
        max:
          type: number
          format: decimal
          nullable: true
        currency:
          type: string
          nullable: true
        period:
          type: string
          nullable: true
          enum:
            - hourly
            - daily
            - weekly
            - monthly
            - yearly
            - per-diem
            - null
    JobQualificationsDto:
      type: object
      properties:
        must_have:
          $ref: '#/components/schemas/QualificationBucketDto'
        preferred:
          $ref: '#/components/schemas/QualificationBucketDto'
    QualificationBucketDto:
      type: object
      properties:
        education:
          type: array
          items:
            type: string
        certifications:
          type: array
          items:
            type: string
        skills:
          type: array
          items:
            $ref: '#/components/schemas/QualificationSkillDto'
    QualificationSkillDto:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
          default: hard
  responses:
    Unauthorized:
      description: Missing or invalid API key
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: API key provided by Jobo

````