---
title: "Create Knot Zero Links (Batch)"
method: POST
path: "/zero-link/batch/create"
---

# Create Knot Zero Links (Batch)

`POST /zero-link/batch/create`

## Request

- Base URL: `https://development.knotapi.com`
- URL: `https://development.knotapi.com/zero-link/batch/create`
- Auth: HTTP basic

Create Knot Zero links for up to 10,000 users in one request.

## Request body

- object
  - `type` 'card_switcher', required: Product to associate the link with.
  - `users` object[], required: The users to create links for. Maximum 10,000 users per request. A user can appear once per card. Later rows with the same `external_user_id` and `card_id` get an error.
    - `phone_number` string, required: User's phone number in E.164 format. Must be a valid US or Canadian phone number. Knot sends a one-time code to this number to verify the user each time they open the link.
    - `external_user_id` string, required: Your unique identifier for the user.
    - `card_id` string, required: Your unique identifier for the user's card.

## Response `200`

Successful request. Results are returned in the same order as `users` in the request. A user that fails validation returns an `error` instead of a `link` and doesn't fail the rest of the request.

- object
  - `links` object[]: One result per user, in request order.
    - `external_user_id` string, nullable: The `external_user_id` from the request.
    - `card_id` string, nullable: The `card_id` from the request.
    - `link` string, nullable: The Knot Zero link for the user. `null` when `error` is present.
    - `token` string, nullable: The unique token in `link`, returned separately so you don't need to parse it from the link. `null` when `error` is present.
    - `error` object, nullable: Why a link couldn't be created for the user. `null` on success.
      - `error_type` 'INVALID_REQUEST', required
      - `error_code` 'INVALID_FIELD', required
      - `error_message` 'The phone number field is required.' | 'The phone number must be a string.' | 'The phone number format is invalid.' | 'The phone number must be a valid number in a supported country.' | 'The external user id field is required.' | 'The external user id must be a string.' | 'The external user id must not be greater than 256 characters.' | 'The card id field is required.' | 'The card id must be a string.' | 'The card id must not be greater than 256 characters.' | 'This user and card appear more than once in this request.', required: Which field failed validation, or that the user appears more than once in the request.

## Other responses

- `400`: Bad request.
- `401`: Unauthorized request.
- `403`: Forbidden request.
- `429`: Too many requests. Limited to 10 requests per minute per client.

## Changes

- **2026-11-03** `f10ecfa12c00`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/knotapi/apis/knot-api/changes/zero-link/batch/create/post.md)

---

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