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

# Testing

## Worked testing samples

The endpoint list below documents every operation's parameters; this
overlay walks a sender-ID sandbox run the way a deliverability check
actually uses it: **list the networks the tester can probe → start a
sender-ID test → poll the test by id**. Success envelopes are `{ data, meta }`, error envelopes
`{ error, meta }` — see [How to read a worked
sample](/guides/using-orbit-samples). The testing routes ignore the
sandbox-key toggle — a live API key drives them, and the read paths are
operator reads rather than tenant-read operations.

Every response carries `meta.request_id`. Quote the request id when you
report a violation list that drifted mid-test, or a sender-ID gate that
allowed a string your route rejects.

### 1. List testing networks

`GET /api/v1/testing/networks` returns the networks the testing probe
can reach — the destination-window matrix for sender-ID and supplier
checks. Use it before you start a sender-ID test so you only probe
networks the matrix supports.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.orbit.devotel.io/api/v1/testing/networks" \
    -H "X-API-Key: dv_test_sk_YOUR_KEY"
  ```

  ```typescript Node.js theme={null}
  const res = await fetch(
    "https://api.orbit.devotel.io/api/v1/testing/networks",
    {
      headers: { "X-API-Key": process.env.ORBIT_API_KEY! },
    },
  );
  console.log(await res.json());
  ```
</CodeGroup>

```json 200 theme={null}
{
  "data": {
    "networks": [
      { "id": "net_tmobile", "country": "US", "supports_sender_id": true },
      { "id": "net_o2", "country": "GB", "supports_sender_id": true }
    ]
  },
  "meta": {
    "request_id": "req_tst_networks",
    "timestamp": "2026-08-26T12:00:00.000Z"
  }
}
```

### 2. Start a sender-ID test

`POST /api/v1/testing/sender-id-test` starts a deliverability probe for a
candidate sender ID: the network, the ID string, and the probe window.
The result is a pending test id you poll on the next call.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.orbit.devotel.io/api/v1/testing/sender-id-test" \
    -H "X-API-Key: dv_test_sk_YOUR_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "network_id": "net_tmobile",
    "sender_id": "NORTHFLOW",
    "window_seconds": 300
  }'
  ```

  ```typescript Node.js theme={null}
  const res = await fetch(
    "https://api.orbit.devotel.io/api/v1/testing/sender-id-test",
    {
      method: "POST",
      headers: {
        "X-API-Key": process.env.ORBIT_API_KEY!,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        network_id: "net_tmobile",
        sender_id: "NORTHFLOW",
        window_seconds: 300,
      }),
    },
  );
  console.log(await res.json());
  ```
</CodeGroup>

```json 200 theme={null}
{
  "data": {
    "test_id": "sid_8fb2d1b7c00c4ec9",
    "status": "pending"
  },
  "meta": {
    "request_id": "req_tst_sid",
    "timestamp": "2026-08-26T12:01:00.000Z"
  }
}
```

### 3. Poll a sender-ID test

`GET /api/v1/testing/sender-id-test/{testId}` returns the test's
current status — `pending`, `allowed`, `blocked`, or `errored`. Poll it
when the POST returned `status: pending`.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://api.orbit.devotel.io/api/v1/testing/sender-id-test/sid_8fb2d1b7c00c4ec9" \
    -H "X-API-Key: dv_test_sk_YOUR_KEY"
  ```

  ```typescript Node.js theme={null}
  const res = await fetch(
    "https://api.orbit.devotel.io/api/v1/testing/sender-id-test/sid_8fb2d1b7c00c4ec9",
    {
      headers: { "X-API-Key": process.env.ORBIT_API_KEY! },
    },
  );
  console.log(await res.json());
  ```
</CodeGroup>

```json 200 theme={null}
{
  "data": {
    "test_id": "sid_8fb2d1b7c00c4ec9",
    "network_id": "net_tmobile",
    "sender_id": "NORTHFLOW",
    "status": "allowed",
    "checked_at": "2026-08-26T12:01:30.000Z"
  },
  "meta": {
    "request_id": "req_tst_poll",
    "timestamp": "2026-08-26T12:01:30.000Z"
  }
}
```

### 4. Errors

Errors follow the `{ error, meta }` envelope. The failure every
deliverability runner hits:

**404 — unknown test id.** A `testId` that was never started or a
cross-tenant poll:

```json 404 theme={null}
{
  "error": {
    "code": "RESOURCE_NOT_FOUND",
    "message": "No sender-ID test with that id exists in this workspace.",
    "status": 404
  },
  "meta": {
    "request_id": "req_tst_err",
    "timestamp": "2026-08-26T12:02:00.000Z"
  }
}
```
