---
title: "Cancel a port-in"
method: DELETE
path: "/v1/phone-numbers/port-in/{id}"
tags: ["Phone Numbers"]
---

# Cancel a port-in

`DELETE /v1/phone-numbers/port-in/{id}`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/phone-numbers/port-in/{id}`
- Auth: HTTP bearer

Cancel an in-flight port (wrong number, staying with the old carrier).
Only orders that haven't ported can be cancelled; a completed port is a
normal number release instead. The carrier may report `cancel-pending`
briefly while the losing carrier acknowledges; it settles to
`cancelled`.

## Path parameters

- `id` string, required

## Response `200`

Cancel accepted (idempotent when already cancelled).

- object
  - `id` string
  - `status` 'draft' | 'pending' | 'foc_confirmed' | 'ported' | 'exception' | 'cancelled'

## Other responses

- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `404`: Porting order not found
- `409`: Port already completed (release the number instead), or the carrier rejected the cancel (reason included)

## Changes

- **2026-10-06** `f8c8f34fb41a`: 1 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 7 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `401` status
  - added the optional property `param` to the response with the `401` status
  - …3 more

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/phone-numbers/port-in/:id/delete.md)

---

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