Sign inGet Started

Comprar e liberar um número

Comprar um número exige duas chamadas: pesquisar um país para ver o que está à venda e depois pedir o número desejado. Tudo aqui precisa de uma chave API com o escopo numbers, e a primeira compra em uma organização exige verificação de identidade.

Pesquisar um país

A pesquisa é sempre restrita a um país, então country_code é obrigatório. Refine ainda mais com number_type, capabilities ou um prefix de dígitos nacionais.

// The search is always country-scoped, so country_code is required.
const page = await bird.numbers.available.list({
  country_code: "GB",
  capabilities: ["sms", "voice"],
});
for (const candidate of page.data) {
  console.log(candidate.number, candidate.number_type);
}

Use o host regional que corresponde ao prefixo bk_{region}_ da sua chave: https://us1.platform.bird.com ou https://eu1.platform.bird.com.

Cada resultado traz apenas o que você precisa para escolher um:

Exemplo de código
{
  "data": [
    {
      "number": "+447700900123",
      "country_code": "GB",
      "number_type": "mobile",
      "capabilities": ["sms", "voice"]
    }
  ],
  "next_cursor": null,
  "prev_cursor": null
}

Nosso próprio inventário é retornado primeiro e pagina normalmente. A última página pode incluir números que uma operadora está oferecendo ao vivo, então um número listado há pouco pode já ter sido vendido quando você fizer o pedido.

Para confirmar que um número ainda está disponível antes de comprá-lo, consulte-o com GET /v1/numbers/available/{number}. Um 404 significa que ele não está disponível para venda no momento, seja porque a operadora o retirou ou porque nosso próprio inventário o reservou. A reverificação consome o mesmo limite de requisições numbers_availability da busca, então reverifique apenas o candidato que você vai comprar, não todos os resultados.

Comprar o número

Passe um número da busca para POST /v1/numbers/orders. Para proteção contra novas tentativas, veja Idempotência.

const order = await bird.numbers.orders.create({ number: "+447700900201" });
// Most orders finish inside the request. One that has to wait on a carrier
// comes back without a number_id. Poll it until it is completed or failed.
if (order.status === "completed") {
  console.log("allocated as", order.number_id);
} else {
  console.log("still", order.status, "; poll", order.id);
}

A maioria dos pedidos termina dentro da própria requisição e responde 201 com o número já sendo seu:

Exemplo de código
{
  "id": "nor_01m0da22b0e39anhzyhtw3gzdg",
  "number": "+447700900123",
  "country_code": "GB",
  "number_type": "mobile",
  "status": "completed",
  "number_id": "nda_7eqywfwzxwa1za9n8wp7e1xkr8",
  "failure_reason": null,
  "completed_at": "2026-08-19T15:25:56.479320Z",
  "created_at": "2026-08-19T15:25:56.448051Z",
  "updated_at": "2026-08-19T15:25:56.479320Z"
}

number_id é o identificador para tudo depois disso: consultar o número e liberá-lo.

Consultar um pedido que não terminou

Um pedido que precisa aguardar uma operadora responde 202, com number_id ainda em null. Consulte-o novamente até que status seja completed ou failed.

const order = await bird.numbers.orders.get("nor_01krdgeqcxet5s7t44vh8rt9mg");
// failure_reason says what went wrong, and only ever on a failed order.
console.log(order.status, order.failure_reason ?? "");

Um pedido passa por charging, ordering e pending antes de se resolver. Em failed, failure_reason diz o que deu errado em termos simples. Uma taxa de ativação já cobrada não é reembolsada, então um pedido com falha pode deixar uma cobrança; entre em contato com o suporte se isso acontecer.

Liberar um número

Liberar encerra a cobrança mensal e o número para de funcionar para você. Apenas um número dedicated pode ser liberado, e um número liberado não volta imediatamente para venda.

// Releasing stops the monthly charge and the number stops working for you.
// Only a dedicated number can be released; a shared one answers E14002.
await bird.numbers.release("nda_01krdgeqcxet5s7t44vh8rt9mg");

Uma liberação bem-sucedida responde 204 sem corpo.

Quando um pedido é recusado

Quatro recusas cobrem quase toda compra com falha.

402 com E03000 significa que a carteira não cobre o número. Adicione saldo e compre novamente. Nenhum pedido é criado, então nada é cobrado.

412 significa que a organização não completou a verificação de identidade que uma primeira compra exige. Complete-a e tente novamente.

409 com E14000 significa que o número foi vendido enquanto você escolhia. Busque novamente e escolha outro.

409 com E14001 significa que muitos dos seus pedidos já estão em andamento. Aguarde um terminar e compre novamente.

Próximos passos

Continue com a documentação, guias e exemplos sobre este tópico.