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

# UK DNC Checker

> Check whether a UK phone number is registered on TPS or CTPS. Rate limit: 5 requests per rolling second per workspace.

Submit a UK phone number using `phone`. The operation checks the number against the UK TPS and CTPS registers: TPS (Telephone Preference Service) is the register for individuals, and CTPS (Corporate Telephone Preference Service) is the register for businesses. For US numbers, use the [US DNC Checker](https://docs.airscale.io/api-reference/dnc-checker.md).

> [!NOTE]
>
> A completed check costs 1 credit whether the number is listed or not. The limit is 5 requests per rolling second per workspace. Validation failures, rejected numbers, and lookup failures are not charged.

## Send a number

Send national (`020 7946 0000`) or international (`+44 20 7946 0000`) format. Spaces, parentheses, dots, and hyphens are accepted, up to 32 characters. Numbers in the Crown dependency ranges, such as Jersey, Guernsey, and the Isle of Man, are accepted. The response returns the number in `+44` format.

`phone_number` and `mobile_phone` are accepted aliases. `phone` takes precedence when non-null, followed by `phone_number`, then `mobile_phone`. Any other body field returns `400` with `code: "invalid_input"`. The maximum JSON body size is 256 KiB.

## Read a successful result

| Field | Meaning |
| - | - |
| `status` | `success` for a completed check. |
| `phone` | Normalized UK phone number in `+44` format. |
| `listed` | `true` when the number is on TPS, CTPS, or both. |
| `on_tps` | `true` when the number is on TPS, the register for individuals. |
| `on_ctps` | `true` when the number is on CTPS, the register for businesses. |
| `result` | `Listed on TPS`, `Listed on CTPS`, `Listed on TPS & CTPS`, or `Not listed on TPS/CTPS`. |
| `credits_used` | Credits charged for this check: always `1`. |
| `credits_remaining` | Remaining workspace credit balance. |

## Errors and retries

| Status | Meaning | Charged |
| - | - | - |
| `400` | Invalid JSON, a body that is not an object, or an unsupported field. | No |
| `401` | Missing or invalid API key. | No |
| `403` | Insufficient credits. At least 1 credit is required before a check starts. | No |
| `413` | JSON body larger than 256 KiB. | No |
| `422` | `code: "unsupported_phone_region"` for a valid non-UK number; `code: "invalid_input"` for a missing, malformed, or invalid UK number. | No |
| `429` | Workspace rate limit exceeded. | No |
| `502` | The register lookup failed or returned an invalid result. | No |
| `503` | A service the check depends on is temporarily unavailable. | No result is returned |
| `504` | The register lookup timed out. | No |

Correct the input before retrying a `400` or `422`. After `429`, retry in a later second with bounded exponential backoff. For temporary `502`, `503`, or `504` responses, retry with increasing delays and a fixed retry limit; contact support if errors persist. Every completed retry is a new check that costs 1 credit.

## Next step

Review [Authentication](https://docs.airscale.io/api-reference/authentication.md) and [rate limits](https://docs.airscale.io/api-reference/rate-limits.md) before scheduling checks.


## OpenAPI

````yaml openapi.json POST /v1/uk-dnc-check
openapi: 3.1.0
info:
  title: Airscale Public API
  version: '2026-09-11'
  description: Search, enrich, and resolve public business data with Airscale.
  x-airscale-source-repository: ViceScale/airscale-code
  x-airscale-source-sha: 1de19e1b70a052a4b8d9c2075021a7e5e7a94d51
servers:
  - url: https://api.airscale.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search and discovery
    description: Search people, companies, and the web.
  - name: Contact data
    description: Find professional and personal contact data.
  - name: Profiles and reverse lookup
    description: Extract profiles or resolve a person from known contact data.
  - name: Post engagement
    description: Retrieve and enrich people who liked or commented on LinkedIn posts.
  - name: LinkedIn content
    description: >-
      Search LinkedIn posts, read profile and company feeds, and retrieve
      profile comments and comment reactions.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: >-
      Find website technologies and check WhatsApp availability, Meta ads, and
      email deliverability.
paths:
  /v1/uk-dnc-check:
    post:
      tags:
        - Miscellaneous
      summary: Check a UK phone number against TPS and CTPS
      description: >-
        Checks one UK (+44) phone number against the UK TPS register for
        individuals and the CTPS register for businesses. A completed check
        costs one credit whether the number is listed or not. Non-UK and
        malformed numbers are rejected before the check and are not charged.
      operationId: checkUkDnc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                phone:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Recommended field. A UK number in national (020 7946 0000)
                    or international (+44 20 7946 0000) format, including Crown
                    dependency ranges. At most 32 characters; digits, spaces,
                    parentheses, dots, hyphens, and a leading + only.
                  minLength: 1
                  maxLength: 32
                phone_number:
                  type:
                    - string
                    - 'null'
                  description: Alias used only when phone is null or absent.
                  minLength: 1
                  maxLength: 32
                mobile_phone:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Alias used only when phone and phone_number are null or
                    absent.
                  minLength: 1
                  maxLength: 32
              anyOf:
                - required:
                    - phone
                - required:
                    - phone_number
                - required:
                    - mobile_phone
              description: >-
                Only phone, phone_number, and mobile_phone are accepted; any
                other field returns 400. Maximum JSON body size: 256 KiB.
            examples:
              request:
                value:
                  phone: '+442079460000'
      responses:
        '200':
          description: >-
            The result of a completed check. Costs one credit whether the number
            is listed or not.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: success
                  phone:
                    type: string
                    pattern: ^\+44\d{9,10}$
                    description: Normalized UK number in +44 format.
                  listed:
                    type: boolean
                    description: True when the number is on TPS, CTPS, or both.
                  on_tps:
                    type: boolean
                    description: >-
                      True when the number is on TPS, the UK register for
                      individuals.
                  on_ctps:
                    type: boolean
                    description: >-
                      True when the number is on CTPS, the UK register for
                      businesses.
                  result:
                    type: string
                    enum:
                      - Listed on TPS
                      - Listed on CTPS
                      - Listed on TPS & CTPS
                      - Not listed on TPS/CTPS
                    description: Readable summary of on_tps and on_ctps.
                  credits_used:
                    type: number
                    const: 1
                  credits_remaining:
                    type:
                      - number
                      - 'null'
                    description: Remaining workspace credit balance after the charge.
                required:
                  - status
                  - phone
                  - listed
                  - on_tps
                  - on_ctps
                  - result
                  - credits_used
                  - credits_remaining
                additionalProperties: false
              examples:
                listed:
                  value:
                    status: success
                    phone: '+442079460000'
                    listed: true
                    on_tps: true
                    on_ctps: true
                    result: Listed on TPS & CTPS
                    credits_used: 1
                    credits_remaining: 99
                notListed:
                  value:
                    status: success
                    phone: '+442079460000'
                    listed: false
                    on_tps: false
                    on_ctps: false
                    result: Not listed on TPS/CTPS
                    credits_used: 1
                    credits_remaining: 99
        '400':
          description: >-
            Invalid JSON, a body that is not a JSON object, or a field other
            than phone, phone_number, and mobile_phone. Not charged.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    enum:
                      - invalid_input
                required:
                  - error
                  - code
                additionalProperties: true
              examples: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            Insufficient credits. At least one credit is required before a check
            starts.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  code:
                    type: string
                required:
                  - error
                additionalProperties: true
              examples: {}
        '404':
          description: Unknown path or method.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  code:
                    type: string
                required:
                  - error
                additionalProperties: true
              examples: {}
        '413':
          description: JSON body exceeds 256 KiB.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  code:
                    type: string
                required:
                  - error
                additionalProperties: true
              examples: {}
        '422':
          description: >-
            invalid_input: missing, malformed, or invalid UK number, including a
            number rejected by the register lookup. unsupported_phone_region: a
            valid number outside +44. Not charged; correct the input before
            retrying.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    enum:
                      - invalid_input
                      - unsupported_phone_region
                required:
                  - error
                  - code
                additionalProperties: true
              examples: {}
        '429':
          description: Workspace rate limit exceeded. Not charged.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  code:
                    type: string
                required:
                  - error
                additionalProperties: true
              examples: {}
        '502':
          description: >-
            The register lookup failed or returned an invalid result. Not
            charged.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  code:
                    type: string
                required:
                  - error
                additionalProperties: true
              examples: {}
        '503':
          description: >-
            Authentication, rate limiting, the register lookup, or credit
            settlement is temporarily unavailable. No result is returned; after
            a completed lookup, check your balance before retrying.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  code:
                    type: string
                required:
                  - error
                additionalProperties: true
              examples: {}
        '504':
          description: The register lookup timed out after 30 seconds. Not charged.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  code:
                    type: string
                required:
                  - error
                additionalProperties: true
              examples: {}
components:
  responses:
    Unauthorized:
      description: The Bearer token is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      additionalProperties: true
      properties:
        error:
          type: string
        message:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Use an Airscale workspace API key. Never expose the key in client-side
        code.

````

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