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

# Get job results

> Retrieve the final results for a completed job.



## OpenAPI

````yaml catch-all-api get /catchAll/pull/{job_id}
openapi: 3.1.0
info:
  title: NewsCatcher CatchAll API
  version: 1.10.0
  description: >
    CatchAll is a web search API that generates unique datasets that don't exist
    anywhere else on the web. Built on NewsCatcher's proprietary real-world
    event index, it delivers state-of-the-art recall—finding all relevant
    events, not just top results.


    ### Authentication


    All endpoints except /health and /version require `x-api-key` header. If the
    key is invalid or missing, the API returns the `403 Forbidden` error.


    ### Job workflow


    1. (Optional) Get suggestions via /catchAll/initialize

    2. Submit a query via /catchAll/submit with optional date ranges and custom
    validators/enrichments

    3. Poll /catchAll/status/{job_id} until completed (10-15 minutes)

    4. Retrieve results via /catchAll/pull/{job_id}


    ### Event monitor workflow


    1. Create successful job via /catchAll/submit

    2. Create event monitor via /catchAll/monitors/create with schedule

    3. Retrieve aggregated results via /catchAll/monitors/pull/{monitor_id}


    ### Webhook workflow


    1. Create a webhook via `POST /catchAll/webhooks`

    2. Attach it to a job or event monitor via `POST
    /catchAll/webhooks/{webhook_id}/resources`,
       or pass `webhook_ids` at job or event monitor creation time
    3. Receive HTTP notifications at the configured URL when each job completes


    ### Company search workflow


    1. Create a dataset via `POST /catchAll/datasets/` or `POST
    /catchAll/datasets/upload`

    2. Wait for the dataset `latest_status` to reach `ready`

    3. Submit a job with `connected_dataset_ids` pointing to your dataset

    4. Retrieve results — each record includes a `connected_entities` array
       with relevance scores per matched company

    ### Important notes


    **Dynamic schemas**: Response schemas are generated dynamically by LLMs.
    Field names in the `enrichment` object may vary and are not deterministic
    across jobs unless explicitly specified.
  contact:
    name: NewsCatcher
    url: https://newscatcherapi.com
    email: support@newscatcherapi.com
servers:
  - url: https://catchall.newscatcherapi.com
    description: Production server
security:
  - ApiKeyAuth: []
tags:
  - name: Jobs
    description: Operations to create, monitor, and retrieve job results.
    externalDocs:
      description: Learn about job lifecycle and status tracking
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/get-started/quickstart
  - name: Event Monitors
    description: Operations to create, operate and retrieve event monitor results.
    externalDocs:
      description: >-
        Automate recurring queries with scheduled jobs and webhook
        notifications.
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/concepts/event-monitors
  - name: Webhooks
    description: >
      Operations to create and manage reusable webhook endpoints.


      A webhook is a named HTTP endpoint that receives a POST notification

      when a job or event monitor completes. Create webhooks once at the
      organization

      level and attach them to any number of jobs or event monitors via
      `webhook_ids`.

      Supports Slack, Microsoft Teams, and generic HTTP targets with
      configurable

      delivery modes, authentication, and headers.
    externalDocs:
      description: Learn about centralized webhooks and notification setup
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/guides-and-concepts/webhooks
  - name: Entities
    description: >
      Operations to create, update, and delete company entities.


      Entities are the building blocks of Company Monitors. Each entity
      represents

      a company (or person) you want to track. Add identifying information such
      as

      domain, alternative names, and key persons to improve matching quality.
    externalDocs:
      description: Learn about Company Monitors and entities
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/concepts/company-monitors
  - name: Datasets
    description: >
      Operations to create and manage datasets of entities.


      A dataset is a named collection of entities — think of it as a watchlist
      or

      portfolio. Connect a dataset to a job via `connected_dataset_ids` to
      activate

      Company Monitors. Datasets can be reused across multiple jobs and event
      monitors.
    externalDocs:
      description: Learn about datasets and Company Monitors
      url: >-
        https://www.newscatcherapi.com/docs/web-search-api/concepts/company-monitors
  - name: Projects
    description: >
      Operations to create, organize, and manage projects.


      A project is a named container for jobs, event monitors, and datasets.
      Group

      related resources by use case, team, or client, and share them with

      teammates. Resources can be assigned at creation time or post-hoc.
    externalDocs:
      description: Learn about projects and resource organization
      url: https://www.newscatcherapi.com/docs/web-search-api/concepts/projects
  - name: Meta
    description: Operations to check API health and version.
externalDocs:
  description: Find out more about NewsCatcher CatchAll API
  url: https://www.newscatcherapi.com/docs/web-search-api/get-started/introduction
paths:
  /catchAll/pull/{job_id}:
    get:
      tags:
        - Jobs
      summary: Get job results
      description: Retrieve the final results for a completed job.
      operationId: getJobResults
      parameters:
        - $ref: '#/components/parameters/JobId'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          $ref: '#/components/responses/PullJobResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      externalDocs:
        description: Working with job results and dynamic schemas
        url: >-
          https://www.newscatcherapi.com/docs/web-search-api/api-reference/jobs/get-job-results
components:
  parameters:
    JobId:
      name: job_id
      in: path
      required: true
      description: >
        Unique job identifier returned from [`POST
        /catchAll/submit`](https://www.newscatcherapi.com/docs/web-search-api/api-reference/jobs/create-job).
      schema:
        type: string
        format: uuid
      example: 5f0c9087-85cb-4917-b3c7-e5a5eff73a0c
    Page:
      name: page
      in: query
      required: false
      schema:
        type: integer
        default: 1
        minimum: 1
      description: |
        Page number to retrieve.
    PageSize:
      name: page_size
      in: query
      required: false
      schema:
        type: integer
        default: 100
        minimum: 1
        maximum: 1000
      description: |
        Number of records per page.
  responses:
    PullJobResponse:
      description: Results retrieved successfully
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PullJobResponseDto'
          example:
            job_id: 5f0c9087-85cb-4917-b3c7-e5a5eff73a0c
            query: Series B funding rounds for SaaS startups
            context: Focus on funding amount and company name
            validators: []
            enrichments: []
            status: completed
            error: null
            duration: 1m
            candidate_records: 4
            valid_records: 3
            progress_validated: 4
            date_range:
              start_date: '2026-02-18T00:00:00Z'
              end_date: '2026-02-23T00:00:00Z'
            page: 1
            page_size: 2
            total_pages: 2
            limit: 10
            mode: base
            all_records:
              - record_id: '6983973854314692457'
                record_title: VulnCheck Raises $25M Series B Funding
                enrichment:
                  enrichment_confidence: high
                  funding_amount: 25000000
                  funding_currency: USD
                  funding_date: '2026-02-17'
                  investee_company:
                    source_text: VulnCheck
                    confidence: 0.99
                    metadata:
                      name: VulnCheck
                      domain_url: vulncheck.com
                      domain_url_confidence: high
                  investor_company:
                    source_text: Sorenson Capital
                    confidence: 0.99
                    metadata:
                      name: Sorenson Capital
                      domain_url: null
                      domain_url_confidence: null
                citations:
                  - title: VulnCheck raises $25M Series B
                    link: >-
                      https://www.msn.com/en-us/money/other/exclusive-vulncheck-raises-25m-funding-to-help-companies-patch-software-bugs/ar-AA1WwdjW
                    published_date: '2026-02-17T14:01:05Z'
    UnauthorizedError:
      description: >
        The caller could not be identified: the `x-api-key` header is missing,
        the key is

        unknown or disabled, or the key belongs to a different organization than
        the one

        requested.


        Once identity is established, an access failure returns `403` instead.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            detail: X-API-Key header is required for this endpoint
    ForbiddenError:
      description: >
        Authenticated, but not allowed to perform this request — for example the
        user is

        not a member of the requested organization, has no active API key in it,
        or the

        resource belongs to another organization.


        A missing, unknown, or disabled API key returns `401`, not `403`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFoundError:
      description: Job/event monitor not found or results not available
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    PullJobResponseDto:
      type: object
      required:
        - job_id
      properties:
        job_id:
          type: string
          format: uuid
          description: Job identifier.
        query:
          type: string
          description: Original plain text query.
          example: Series B funding rounds for SaaS startups
        context:
          type: string
          description: Context provided with the query.
          example: Focus on funding amount and company name
        validators:
          type: array
          items:
            type: object
          description: Validators applied to filter results.
          default: []
          example: []
        enrichments:
          type: array
          items:
            type: object
          description: Enrichment fields used for data extraction.
          default: []
          example: []
        status:
          type: string
          description: |
            Job status.
          example: completed
        error:
          type:
            - string
            - 'null'
          description: Error message if the job failed. Null for successful jobs.
        limit:
          type: integer
          description: >-
            Record limit for this job. Reflects the value specified at submit
            time, or the plan default if no limit was provided.
          example: 100
        duration:
          type: string
          description: Total time taken to process the job.
          example: 1m
        candidate_records:
          type: integer
          description: >-
            Total number of distinct event clusters identified. Compare with
            `progress_validated` to estimate how many candidates remain
            unprocessed for job continuation.
          example: 4
        valid_records:
          type: integer
          description: Number of validated records extracted.
          example: 3
        progress_validated:
          type:
            - integer
            - 'null'
          description: >
            Number of candidate clusters that have been validated during
            processing.


            The system process data in batches. This field tracks how many
            `candidate_records` have been checked against validation criteria so
            far.
          example: 4
        date_range:
          type: object
          properties:
            start_date:
              type: string
              format: date-time
              example: '2026-02-17T00:00:00Z'
            end_date:
              type: string
              format: date-time
              example: '2026-02-24T00:00:00Z'
        page:
          type: integer
          minimum: 1
          default: 1
          description: The current page number.
        page_size:
          type: integer
          minimum: 1
          default: 10
          description: The number of records per page.
        total_pages:
          type: integer
          minimum: 0
          default: 0
          description: The total number of pages available.
        mode:
          type: string
          enum:
            - lite
            - base
          default: base
          description: Processing mode used for this job.
          example: base
        connected_datasets:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedDataset'
          description: |
            Datasets used to narrow retrieval scope, each with `id` and `name`.
        source_groups:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/SourceGroupRef'
          description: >
            Source groups attached to this job, each with `slug`, `name`, and
            `description`.

            `null` when the job was not scoped to any source group.
        is_all_news_query:
          type: boolean
          description: >
            True when the query was submitted as an all-news (watchlist-generic)
            query.
        sharing_info:
          oneOf:
            - $ref: '#/components/schemas/SharingInfo'
            - type: 'null'
          description: >
            Present when the job was shared with the authenticated user by
            another organization member. `null` when the user owns the job.
        all_records:
          type: array
          items:
            $ref: '#/components/schemas/Record'
          description: Array of extracted records with structured data and citations.
    Error:
      type: object
      properties:
        detail:
          type: string
          description: Error message.
          example: Invalid API key
    ConnectedDataset:
      type: object
      required:
        - id
        - name
      description: >
        A dataset used to narrow the retrieval scope of a job or event monitor,
        returned with its identifier and name.
      properties:
        id:
          type: string
          format: uuid
          description: Dataset identifier.
          example: 9f3a8b2c-1e4d-4a5b-9c8d-6e7f8a9b0c1d
        name:
          type: string
          description: >
            Dataset name as stored. Check `is_deleted` to determine whether the
            dataset is still active.
          example: My Portfolio
        is_deleted:
          type: boolean
          default: false
          description: True when the dataset has been deleted.
          example: false
    SourceGroupRef:
      type: object
      required:
        - slug
        - name
      description: >
        A source group attached to a job, returned with its slug, name, and
        description.


        Source groups are curated domain allowlists maintained by NewsCatcher.
        Attach one

        to a job with `source_groups` on job creation to scope fetching to its
        domains.
      properties:
        slug:
          type: string
          description: >
            Stable identifier for the source group. This is the value you pass
            in

            `source_groups` when creating a job.
          example: top-100-us-finance
        name:
          type: string
          description: Human-readable name of the source group.
          example: Top 100 US Finance
        description:
          type:
            - string
            - 'null'
          description: What the group covers, when set.
          example: Leading US financial news and trade publications.
    SharingInfo:
      type: object
      description: |
        Present on resources shared with the authenticated user by another
        organization member. Omitted entirely on resources the user owns.
      required:
        - shared_at
        - permission
        - shared_by
      properties:
        shared_at:
          type: string
          format: date-time
          description: When the resource was shared.
          example: '2026-04-15T12:00:00Z'
        permission:
          type: string
          enum:
            - view
            - edit
            - manage
          description: Permission level granted to the recipient.
          example: view
        shared_by:
          type: string
          description: |
            Display name of the user who shared the resource (first + last
            name). Falls back to email address, then user ID.
          example: John Doe
    Record:
      allOf:
        - $ref: '#/components/schemas/BaseRecord'
        - type: object
          required:
            - citations
          properties:
            citations:
              type: array
              items:
                $ref: '#/components/schemas/Citation'
              description: Source documents that were used to extract this record.
            connected_entities:
              type: array
              items:
                $ref: '#/components/schemas/ConnectedEntity'
              description: >
                Entities from the connected dataset that are relevant to this
                record.

                Only present when the job was submitted with
                `connected_dataset_ids`.
            tags:
              oneOf:
                - $ref: '#/components/schemas/EventTags'
                - type: 'null'
              description: >
                Fixed-taxonomy classification of the event, as `event_type` and
                `sector`.


                Only present for all-news watchlist jobs — those submitted with

                `fetch_all_watchlist_news: true`, which the job pull response
                reports as

                `is_all_news_query: true`. Absent or `null` for every other job.
    BaseRecord:
      type: object
      required:
        - record_id
        - record_title
        - enrichment
      properties:
        record_id:
          type: string
          description: Unique identifier for the record.
          example: '6983973854314692457'
        record_title:
          type: string
          description: Short title summarizing the record.
          example: VulnCheck Raises $25M Series B Funding
        enrichment:
          type: object
          description: >
            Structured data extracted from web pages. Schema is dynamically
            generated per job. Field names are chosen semantically to match the
            content.


            **Note:** The system always includes the `enrichment_confidence`
            field within the `enrichment` object, regardless of whether
            enrichments are generated or specified by you.

             For integration guidance, see [Dynamic schemas](https://www.newscatcherapi.com/docs/web-search-api/concepts/dynamic-schemas)
          properties:
            enrichment_confidence:
              type:
                - string
                - 'null'
              enum:
                - low
                - medium
                - high
                - null
              description: Overall confidence score for the enrichment extraction.
              example: high
          additionalProperties: {}
          example:
            enrichment_confidence: high
            funding_amount: 25000000
            funding_currency: USD
            funding_date: '2026-02-17'
            investee_company:
              source_text: VulnCheck
              confidence: 0.99
              metadata:
                name: VulnCheck
                domain_url: vulncheck.com
                domain_url_confidence: high
            investor_company:
              source_text: Sorenson Capital
              confidence: 0.99
              metadata:
                name: Sorenson Capital
                domain_url: null
                domain_url_confidence: null
            valuation: 25000000
            other_investors: National Grid Partners, Ten Eleven Ventures, In-Q-Tel
    Citation:
      type: object
      required:
        - title
        - link
        - published_date
      properties:
        title:
          type: string
          description: The title of the source document.
          example: >-
            Exclusive: VulnCheck raises $25M funding to help companies patch
            software bugs
        link:
          type: string
          format: uri
          description: URL to the source document.
          example: >-
            https://www.msn.com/en-us/money/other/exclusive-vulncheck-raises-25m-funding-to-help-companies-patch-software-bugs/ar-AA1WwdjW
        published_date:
          type: string
          format: date-time
          description: >-
            The publication date of the source document in ISO 8601 format (UTC
            timezone).
          example: '2026-02-17T14:01:05Z'
    ConnectedEntity:
      type: object
      required:
        - entity_id
        - name
        - type
        - ed_score
        - relation
      description: >
        A company entity matched to a record in a Company Monitors job, with a
        relevance score and explanation.


        Only entities with `ed_score` ≥ 1 appear in results. Entities scored 0
        are filtered out before the response is returned. When `ed_score_min` is
        set at submission time, entities below that threshold are excluded.
      properties:
        entity_id:
          type: string
          format: uuid
          description: Unique identifier of the matched entity.
          example: e1f2a3b4-c5d6-7890-abcd-ef1234567890
        name:
          type: string
          description: Name of the matched entity.
          example: Tesla
        ed_score:
          type: integer
          minimum: 1
          maximum: 10
          description: >
            Relevance score indicating how directly the entity is associated
            with this event.


            | Score | Meaning |

            |-------|---------|

            | 10 | Direct mention, critical event (merger, CEO change, major
            lawsuit) |

            | 7–9 | Major impact (earnings, product launch, senior hire) |

            | 4–6 | Routine update (minor product news, mid-level changes) |

            | 1–3 | Indirect mention (listed with others, stock noise) |
          example: 8
        relation:
          type: string
          maxLength: 100
          description: >
            Short explanation (up to 100 characters) of why this entity is
            associated with the event.
          example: >-
            Lucid Gravity is positioned as a direct competitor to the Tesla
            Model X.
        association_type:
          type: string
          description: >
            How the entity relates to the event: `event_associated` if the
            entity is a direct actor, `mention` if merely referenced.
          example: event_associated
        type:
          type: string
          description: |
            The entity type.
          example: company
        external_entity_id:
          type:
            - string
            - 'null'
          description: External identifier for this entity. Null when not set.
          example: crm-12345
        company:
          allOf:
            - $ref: '#/components/schemas/CompanyAttributes'
          description: >
            The stored attributes for this entity. Present only when attributes
            exist in the database.


            The field name matches the value of `type` — for example,
            `"company"` type entities have a `company`  field.
    EventTags:
      type: object
      description: >
        Fixed-taxonomy classification of the event described by a record.


        Tagging is additive: it never filters or removes records. A record the
        classifier

        cannot place is still returned, with `unclassifiable` or `other_sector`
        in place of

        a taxonomy value.
      properties:
        event_type:
          type:
            - string
            - 'null'
          description: >
            Taxonomy path describing what happened, drawn from a fixed
            vocabulary.

            `unclassifiable` when no path fits.
          example: deals.merger_acquisition
        sector:
          type:
            - string
            - 'null'
          description: |
            Industry sector the event belongs to, drawn from a fixed vocabulary.
            `other_sector` when no sector fits.
          example: banking
    CompanyAttributes:
      type: object
      description: >
        Identifying attributes for a company entity. All fields are optional but
        improve matching quality.
      properties:
        domain:
          type:
            - string
            - 'null'
          description: |
            Company website domain without protocol or trailing slash.

            The most reliable identifier — strongly recommended when available.
          example: newscatcherapi.com
        key_persons:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >
            Names of key people associated with the company (founders,
            executives, etc.). Improves matching for articles that mention
            people rather than the company name.
          example:
            - Artem Bugara
            - Maksym Sugonyaka
        alternative_names:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >
            Alternative names, abbreviations, or aliases. Helps resolve common
            variations of the company name.
          example:
            - NewsCatcher CatchAll
            - NewsCatcher API
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication.

````

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