---
title: "Update a number provider"
method: PUT
path: "/number_providers/{provider_name}"
tags: ["NumberProvider"]
---

# Update a number provider

`PUT /number_providers/{provider_name}`

## Request

- Base URL: `https://api.voipbin.net/v1.0`
- URL: `https://api.voipbin.net/v1.0/number_providers/{provider_name}`
- Auth: none declared

Updates the `enabled`, `priority` and `config` of the given number provider. Omitted fields keep their current value, and at least one of the three fields is required (an empty body returns 400).
A request that removes a `config` key the provider requires while a secret is stored is rejected with 400.
`config` is merged key by key. A key whose value is an empty string is removed. Only the keys the provider allows are accepted, and they are not secrets.
When the provider has no stored setting yet, it is created with the provider defaults for the fields that are not sent.
Concurrent updates of the same provider's `config` are not serialized: the last write wins.
Requires the project super admin permission.

## Path parameters

- `provider_name` string, required

## Request body

- NumberManagerNumberProviderUpdateRequest: The fields to change. At least one field is required; omitted fields keep their current value.
  - `enabled` boolean: Whether the provider takes part in the number purchase.
  - `priority` integer: The purchase order. A lower value is tried first.
  - `config` object: The non-secret settings, merged key by key. A key with an empty string value is removed. At most 8 keys, key up to 32 bytes and value up to 256 bytes. Only the keys the provider allows are accepted (Telnyx: `connection_id`, `profile_id`; Twilio: `sid`, `trunk_sid`).

## Response `200`

The updated number provider.

- NumberManagerNumberProvider: The setting of a number provider. It never contains a secret.
  - `provider_name` string: The name of the number provider.
  - `enabled` boolean: Whether the provider takes part in the number purchase.
  - `priority` integer: The purchase order. A lower value is tried first; ties are ordered by `provider_name`.
  - `config` object: The non-secret settings of the provider (for example the Telnyx `connection_id`). Omitted when empty.
  - `has_secret` boolean: Whether a secret is stored through the API. The secret itself is never returned.
  - `key_version` integer: The version of the encryption key that encrypted the stored secret. 0 when no secret is stored.
  - `credential_source` 'db' | 'env' | 'none' | 'db_undecryptable': Where the credentials of the number provider come from. `db` is the secret stored through the API, `env` is the platform environment, `none` means no credential exists, and `db_undecryptable` means a stored secret exists but cannot be decrypted (the provider is unusable until the encryption key is restored or the stored secret is deleted).
  - `usable` boolean: Whether the provider can currently serve (enabled, with a usable credential and its required `config`; Twilio needs `sid` and `trunk_sid`, which the environment credentials cannot give). An enabled and usable provider takes part in number purchase.
  - `updated_by` string, uuid: The agent who last changed `enabled`, `priority` or `config`. The agent ID returned from the `GET /agents` response. Omitted when never changed.
  - `secret_updated_by` string, uuid: The agent who last changed the secret. The agent ID returned from the `GET /agents` response. Omitted when never changed.
  - `tm_update` string, date-time: The timestamp of the last change of the setting, including a secret change. Omitted when never changed.
  - `tm_secret_update` string, date-time: The timestamp of the last secret change. Omitted when never changed.

## Other responses

- `400`: Invalid request (INVALID_ARGUMENT).
- `401`: Authentication required (UNAUTHENTICATED).
- `403`: Insufficient permission (PERMISSION_DENIED).
- `404`: Resource not found (NOT_FOUND).
- `500`: Internal error (INTERNAL).

## Changes

- **2026-10-25** `54599fe70445`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/voipbin/apis/voipbin-api/changes/number_providers/:provider_name/put.md)

---

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