---
title: "List a job's results"
method: GET
path: "/jobs/{id}/results"
tags: ["jobs"]
---

# List a job's results

`GET /jobs/{id}/results`

## Request

- Base URL: `https://api.mobilevalidate.com/v1`
- URL: `https://api.mobilevalidate.com/v1/jobs/{id}/results`
- Auth: HTTP bearer

One item per row (number or e-mail address) in input order, with every check of the row. Filter by `registered` / `status` of one `service`; page with `limit` and `after` = the previous page's `next_cursor`.

## Path parameters

- `id` string, required

## Query parameters

- `registered` 'true' | 'false' | 'null'
- `status` 'completed' | 'pending' | 'unknown' | 'unsupported_country' | 'failed'
- `service` string
- `limit` integer
- `after` string

## Response `200`

A page of result items.

- object
  - `object` 'list', required
  - `data` ResultItem[], required
    - union: One row. Phone rows (kind "phone"; older responses may omit kind) carry e164, country and number_status. E-mail rows (kind "email") carry email (normalized address, null if invalid) and email_status; their e164 and country are null.
      - object
        - `kind` 'phone': Input type of the row.
        - `input` string, required: As sent in the originating request; masked on later reads.
        - `e164` string, nullable
        - `country` string, nullable
        - `number_status` 'valid' | 'invalid_number' | 'duplicate' | 'suppressed', required: Phone rows only.
        - `email` string, nullable: E-mail rows only; normalized address (null when invalid).
        - `email_status` 'valid' | 'invalid_email' | 'duplicate' | 'suppressed': E-mail rows only.
        - `checks` object: One CheckResult per requested check of the row's input type, keyed by service code (absent for invalid/duplicate/suppressed rows).
        - `whatsapp` WhatsAppResult: Kept from the first API version; mirrors checks["whatsapp.business"] if requested, else checks["whatsapp.registered"].
          - `service` 'whatsapp.registered' | 'whatsapp.business', required
          - `status` 'completed' | 'pending' | 'unknown' | 'unsupported_country' | 'failed', required
          - `registered` boolean, nullable, required
          - `business` boolean, nullable
          - `confidence` 'high' | 'medium' | 'low' | 'null', nullable
          - `confidence_score` number, nullable
          - `checked_at` string, date-time, nullable
          - `cached` boolean, required
          - `age_seconds` integer, nullable
          - `billed` boolean, required
          - `reason` string, nullable
          - `poll_after_ms` integer, nullable
        - `suggestion` string: How to fix an invalid or likely mistyped identifier, e.g. "Missing country code: send the number in international format (E.164) …" or "Did you mean gmail.com?". Never repeats the input.
        - `test` boolean: true for test-mode rows.
      - object
        - `kind` 'email', required: Input type of the row.
        - `input` string, required: As sent in the originating request; masked on later reads.
        - `e164` string, nullable
        - `country` string, nullable
        - `number_status` 'valid' | 'invalid_number' | 'duplicate' | 'suppressed': Phone rows only.
        - `email` string, nullable, required: E-mail rows only; normalized address (null when invalid).
        - `email_status` 'valid' | 'invalid_email' | 'duplicate' | 'suppressed', required: E-mail rows only.
        - `checks` object: One CheckResult per requested check of the row's input type, keyed by service code (absent for invalid/duplicate/suppressed rows).
        - `whatsapp` WhatsAppResult: Kept from the first API version; mirrors checks["whatsapp.business"] if requested, else checks["whatsapp.registered"].
          - `service` 'whatsapp.registered' | 'whatsapp.business', required
          - `status` 'completed' | 'pending' | 'unknown' | 'unsupported_country' | 'failed', required
          - `registered` boolean, nullable, required
          - `business` boolean, nullable
          - `confidence` 'high' | 'medium' | 'low' | 'null', nullable
          - `confidence_score` number, nullable
          - `checked_at` string, date-time, nullable
          - `cached` boolean, required
          - `age_seconds` integer, nullable
          - `billed` boolean, required
          - `reason` string, nullable
          - `poll_after_ms` integer, nullable
        - `suggestion` string: How to fix an invalid or likely mistyped identifier, e.g. "Missing country code: send the number in international format (E.164) …" or "Did you mean gmail.com?". Never repeats the input.
        - `test` boolean: true for test-mode rows.
  - `has_more` boolean, required
  - `next_cursor` string, nullable

## Other responses

- `default`: Error. Branch on `error.code`; `suggestion` (optional) says how to fix the request. A known path called with the wrong method answers `404 not_found` with an `Allow` header listing the methods it accepts.

---

[API](https://skmtc.dev/mobilevalidate/apis/mobilevalidate-api.md) · [All operations](https://skmtc.dev/mobilevalidate/apis/mobilevalidate-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mobilevalidate/apis/mobilevalidate-api/revisions/f2e56c2454ef?raw)
