A API de IP adicional é para revendas Cloud da Vitt Host. Com ela, o seu sistema pede um IPv4 adicional, recebe a cobrança (PIX ou crédito da conta) e, depois do pagamento, o IP entra sozinho na sua conta Cloud do Virtualizor, pronto para usar numa VPS. Cada IP é um serviço mensal: a API também mostra o vencimento, as faturas de renovação, a suspensão por atraso e avisa cada etapa por webhook.
Para usar a API, peça ao suporte a sua chave de API e, se quiser webhooks, informe a URL que vai recebê-los. Junto com a URL você recebe o segredo do webhook, usado para conferir a assinatura.
1. Confira a chave e veja o preço e o seu crédito:
curl -s https://vitthost.com.br/central/api_ips.php/v1/conta \
-H "Authorization: Bearer $VITT_IP_KEY"2. Peça um IP. O Idempotency-Key é um valor único seu para este pedido: se a rede cair, reenvie com o mesmo valor e você recebe o mesmo pedido, sem duplicar.
curl -s -X POST https://vitthost.com.br/central/api_ips.php/v1/ips \
-H "Authorization: Bearer $VITT_IP_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-cliente-1234-001" \
-d '{"referencia": "cliente-1234", "pagamento": "pix"}'3. A resposta (201) traz o pedido com status: "aguardando_pagamento" e o objeto pix. Mostre o copia e cola ou o QR Code ao seu cliente.
4. Quando o PIX for pago, você recebe os webhooks ip.pago e depois ip.ativo. Sem webhook, consulte GET /v1/ips/{id} a cada poucos minutos até status: "ativo". O campo rede traz IP, máscara, gateway e MAC.
Todas as rotas ficam em:
https://vitthost.com.br/central/api_ips.php/v1/…
Se o seu cliente HTTP ou proxy não repassar o caminho depois do .php, use o parâmetro rota, que funciona igual:
https://vitthost.com.br/central/api_ips.php?rota=/v1/ips. Só HTTPS.
A chave tem o formato vip_<prefixo>_<segredo> e vai em um destes cabeçalhos:
Authorization: Bearer vip_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# ou, se o seu servidor remove o Authorization:
X-Api-Key: vip_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxA chave dá acesso a cobranças da sua conta. Guarde-a no servidor, nunca no navegador ou num app. Se vazar, peça uma nova ao suporte: a antiga para de funcionar na hora.
GET /v1 é público e responde {"api": "ips", "versao": 1, …}. Serve para testar se o endereço e a rota chegam até a API.
Content-Type: application/json nos POST."17.00". Moeda em moeda (hoje, BRL).*_em) são ISO 8601 em UTC: 2026-10-17T01:54:10Z.vencimento, suspensao_prevista_em, encerramento_previsto_em) são só a data, AAAA-MM-DD, no horário de Brasília.{"erro": {"codigo": "…", "mensagem": "…"}} com o status HTTP certo. Programe em cima do codigo, que é estável; a mensagem é para pessoas e pode mudar. Veja a lista.{"dados": [...]}. GET /v1/ips também traz pagina, por_pagina e total.429 muitas_requisicoes com Retry-After) e um limite de pedidos por 24 horas, que aparece em GET /v1/conta.POST /v1/ips e POST /v1/credito) exigem o cabeçalho Idempotency-Key (1 a 100 caracteres: letras, números, _ - : .). Mesmo valor e mesmo corpo devolvem a mesma resposta (com Idempotent-Replayed: true) por 7 dias; mesmo valor com outro corpo dá 422 idempotencia_conflito. Respostas 5xx não ficam gravadas: repita com a mesma chave.| status | O que significa |
|---|---|
aguardando_pagamento | Pedido criado, fatura em aberto. Se não for paga no prazo (validade_pedido_h em /v1/conta), o pedido vira expirado e a fatura é cancelada. |
provisionando | Pago. O IP está sendo comprado e configurado. O campo etapa diz onde está: fila, reserva, entrega, rede, painel. Costuma levar poucos minutos. |
ativo | IP na sua conta Cloud. rede traz IP, máscara, gateway e MAC. |
suspenso | Fatura de renovação em atraso. Pague para reativar. Veja Renovação. |
cancelando | Encerramento em andamento. |
cancelado | Pedido cancelado ou IP encerrado e devolvido. |
expirado | A fatura do pedido não foi paga no prazo. |
em_analise | Nossa equipe está conferindo o pedido e já foi avisada. Nada a fazer do seu lado. |
estornado | O valor pago voltou como crédito na sua conta. |
Rede do IP: sem vps_id, o IP vem com um MAC virtual próprio (rede.mac): use esse MAC na placa de rede da VPS
que for receber o IP. Com vps_id, o IP entra no MAC da própria VPS (rede.mac_da_vps: true): basta adicionar o IP à VPS,
sem trocar a placa de rede.
Cada IP ativo é cobrado por mês. Todo IP ativo ou suspenso traz o campo vencimento e o objeto renovacao:
fatura.gerada, e ela aparece em renovacao.fatura_em_aberto.fatura.vencendo.fatura.vencida; renovacao.em_atraso fica true.renovacao.suspensao_prevista_em, o IP é suspenso (ip.suspenso). Conforme a configuração da sua conta, a suspensão também bloqueia todo o tráfego de entrada do IP na rede (ip.bloqueado; campo bloqueio).renovacao.encerramento_previsto_em: webhook ip.encerramento_proximo, o último aviso.ip.cancelado). Isso não tem volta: o mesmo endereço não pode ser recuperado.
Pagar a fatura em qualquer ponto antes do encerramento resolve tudo: o IP volta a ativo (ip.reativado), o bloqueio sai
(ip.desbloqueado) e o vencimento passa para o mês seguinte (fatura.paga).
Pague pelo PIX (GET /v1/ips/{id}/pix) ou com crédito
(POST /v1/faturas/{id}/pagar-com-credito).
As datas de suspensão e encerramento seguem as regras da Vitt Host no momento do cálculo (hoje: suspensão 1 dia e encerramento 6 dias depois do vencimento).
Use sempre os campos suspensao_prevista_em e encerramento_previsto_em, em vez de fixar esses números no seu sistema.
Para montar a sua rotina de cobrança, use os filtros:
# IPs que vencem nos próximos 7 dias (ordenados pelo vencimento)
GET /v1/ips?vence_em_ate=7
# IPs com renovação em atraso
GET /v1/ips?em_atraso=1
# Faturas vencidas e não pagas
GET /v1/faturas?vencidas=1Com saldo de crédito na conta, as renovações dos IPs se pagam sozinhas:
POST /v1/credito e pague o PIX que volta na resposta.credito.adicionado com a lista em faturas_pagas, e fatura.paga para cada uma.O saldo atual está em GET /v1/credito e em GET /v1/conta.
/v1/conta#Dados da revenda, crédito, preço do IP e limites.
{
"revenda": "Sua Empresa LTDA",
"credito": "34.00",
"moeda": "BRL",
"preco_mensal_ip": "17.00",
"pedidos_24h": 2,
"limite_diario": 100,
"webhook": "https://seu-sistema.com.br/webhooks/vitt",
"validade_pedido_h": 24
}/v1/locais#Os locais (data centers) que vendem IP adicional. Use o codigo no campo local do pedido; sem local, vale o marcado como padrao.
{
"dados": [
{ "codigo": "ca-1", "nome": "Canadá 1", "padrao": true }
]
}/v1/ips#Pede um IP adicional. Exige Idempotency-Key. Cria o pedido e a fatura e responde 201 com o pedido (com o PIX, se pagamento for pix) e o cabeçalho Location: /v1/ips/{id}.
| Campo | Tipo | Descrição |
|---|---|---|
referencia | texto (até 64) | Seu identificador do pedido (cliente, plano…). Único por revenda: repetir dá 409 referencia_repetida. |
pagamento | texto | pix (padrão) ou credito. Com credito, o valor é debitado na hora do saldo da conta; sem saldo suficiente, 402 credito_insuficiente e nada é criado. |
vps_id | número | VPS da sua conta Cloud que vai receber o IP. O IP entra no MAC dela. A VPS precisa estar num local que vende IP. |
local | texto | Código de GET /v1/locais. Sem ele, o padrão. Com vps_id, omita: vale o local da VPS. |
{ "referencia": "cliente-1234-vps-88", "pagamento": "pix", "vps_id": 88 }/v1/ips#Lista os seus pedidos de IP, do mais novo para o mais antigo (com filtro de vencimento, do que vence primeiro).
| Campo | Tipo | Descrição |
|---|---|---|
status | texto | Um dos status do ciclo de vida. |
referencia | texto | O pedido com esta referência. |
vence_em_ate | número (0 a 365) | Só IPs ativos ou suspensos que vencem em até N dias (inclui os já vencidos). |
em_atraso | 1 ou 0 | Só IPs com fatura de renovação vencida e não paga. |
pagina | número | Página, a partir de 1. |
por_pagina | número (1 a 100) | Itens por página. Padrão 25. |
{ "dados": [ { …pedido… } ], "pagina": 1, "por_pagina": 25, "total": 4 }/v1/ips/{id}#Um pedido. Se estiver aguardando pagamento por PIX, vem com o PIX.
/v1/ips/{id}/pix#
O PIX da fatura em aberto do pedido: a do próprio pedido, se ainda não pago, ou a de renovação que vence primeiro, se o IP está ativo ou suspenso.
Chame de novo quando o PIX anterior expirar: um novo é gerado.
Sem fatura em aberto: 409 sem_fatura_aberta.
{
"fatura": { "id": 301, "status": "em_aberto", "total": "17.00", "a_pagar": "17.00", "moeda": "BRL", "vencimento": "2026-11-16" },
"pix": {
"copia_e_cola": "00020126…6304ABCD",
"qr_code_png_base64": "iVBORw0KGgo…",
"valor": "17.00",
"expira_em": "2026-11-16T15:30:00Z"
}
}/v1/ips/{id}#
Antes do pagamento, cancela o pedido e a fatura (cancelado).
Com o IP ativo ou suspenso, encerra o IP (cancelando → cancelado): ele sai da sua conta
e é devolvido ao data center, sem volta. Se o IP ainda estiver em uso numa VPS, o encerramento para em em_analise até ele ser retirado.
Em outros status: 409 estado.
/v1/faturas#As faturas dos seus IPs (a primeira de cada pedido e as renovações) e as faturas de crédito, da mais nova para a mais antiga (até 100).
| Campo | Tipo | Descrição |
|---|---|---|
status | texto | em_aberto, paga ou cancelada. |
vencidas | 1 ou 0 | Só as em aberto com vencimento já passado. |
tipo | texto | ip ou credito. |
{
"dados": [
{ "id": 301, "status": "em_aberto", "total": "17.00", "a_pagar": "17.00", "moeda": "BRL",
"vencimento": "2026-11-16", "tipo": "ip", "servicos": [217] }
]
}/v1/faturas/{id}#Uma fatura, com tipo e servicos.
/v1/faturas/{id}/pix#O PIX de uma fatura em aberto (de IP ou de crédito). Mesma resposta de GET /v1/ips/{id}/pix.
/v1/faturas/{id}/pagar-com-credito#
Paga a fatura inteira com o crédito da conta e devolve a fatura atualizada.
Crédito menor que o valor: 402 credito_insuficiente (nada é debitado). Fatura de crédito: 409 fatura_de_credito.
/v1/credito#Saldo de crédito e as últimas 20 faturas de crédito.
{
"credito": "34.00",
"moeda": "BRL",
"faturas": [
{ "id": 310, "status": "paga", "total": "50.00", "a_pagar": "0.00", "moeda": "BRL", "vencimento": "2026-11-10", "tipo": "credito" }
]
}/v1/credito#
Cria uma fatura de crédito e responde 201 com a fatura e o PIX. Exige Idempotency-Key.
Paga, o valor vira crédito e quita as renovações em aberto (veja Renovação automática).
| Campo | Tipo | Descrição |
|---|---|---|
valor obrigatório | texto | Valor em reais, com ponto e até 2 casas: "50.00". De 2.00 a 2000.00 por fatura. |
curl -s -X POST https://vitthost.com.br/central/api_ips.php/v1/credito \
-H "Authorization: Bearer $VITT_IP_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: credito-2026-11-001" \
-d '{"valor": "50.00"}'{
"fatura": { "id": 310, "status": "em_aberto", "total": "50.00", "a_pagar": "50.00", "moeda": "BRL", "vencimento": "2026-11-10", "tipo": "credito" },
"pix": { "copia_e_cola": "00020126…", "qr_code_png_base64": "iVBORw0KGgo…", "valor": "50.00", "expira_em": null }
}Se o PIX não puder ser gerado na hora, pix vem null com pix_erro: peça depois em GET /v1/faturas/{id}/pix.
{
"id": 42,
"referencia": "cliente-1234-vps-88",
"status": "ativo",
"etapa": null,
"pagamento": "pix",
"local": "ca-1",
"vps_id": null,
"ip": "203.0.113.10",
"rede": {
"ip": "203.0.113.10",
"mascara": "255.255.255.0",
"gateway": "203.0.113.254",
"mac": "00:50:56:00:ab:cd",
"mac_da_vps": false
},
"servico_id": 217,
"vencimento": "2026-11-16",
"renovacao": {
"vencimento": "2026-11-16",
"dias_para_vencer": 3,
"em_atraso": false,
"valor_renovacao": "17.00",
"ciclo": "mensal",
"fatura_em_aberto": {
"id": 301, "status": "em_aberto", "total": "17.00", "a_pagar": "17.00",
"moeda": "BRL", "vencimento": "2026-11-16"
},
"suspensao_prevista_em": "2026-11-17",
"encerramento_previsto_em": "2026-11-22"
},
"bloqueio": null,
"fatura": { "id": 260, "status": "paga", "total": "17.00", "a_pagar": "0.00", "moeda": "BRL", "vencimento": "2026-10-16" },
"pix": null,
"mensagem": "IP ativo na sua conta Cloud. Use-o ao criar ou editar uma VPS.",
"criado_em": "2026-10-17T01:54:10Z",
"pago_em": "2026-10-17T01:55:06Z",
"ativado_em": "2026-10-17T02:03:41Z",
"encerrado_em": null
}| Campo | Tipo | Descrição |
|---|---|---|
id | número | Id do pedido. |
referencia | texto ou null | A que você enviou. |
status · etapa | texto | Veja Ciclo de vida. etapa só em provisionando. |
pagamento | texto | pix, credito ou whmcs (pedido feito fora da API). |
local · vps_id | texto · número | Onde o IP fica e a VPS de destino, se informada. |
ip · rede | texto · objeto | Preenchidos com o IP ativo, suspenso ou encerrando. rede: ip, mascara, gateway, mac, mac_da_vps. |
servico_id | número | Id do serviço na Vitt Host (aparece em servicos das faturas). |
vencimento | data ou null | Próximo vencimento (IP ativo ou suspenso). |
renovacao | objeto ou null | Veja abaixo. Só em IP ativo ou suspenso. |
bloqueio | texto ou null | bloqueando, bloqueado, desbloqueando ou null (sem bloqueio de rede). |
fatura | objeto | A fatura do pedido (a primeira). Renovações estão em renovacao.fatura_em_aberto e em /v1/faturas. |
pix · pix_erro | objeto · texto | Só em GET /v1/ips/{id} e na criação, aguardando pagamento por PIX. |
mensagem | texto | Texto pronto para mostrar ao seu cliente. |
criado_em · pago_em · ativado_em · encerrado_em | data e hora (UTC) | Marcos do pedido. |
| Campo | Tipo | Descrição |
|---|---|---|
vencimento | data | Data do vencimento que está valendo (com atraso, a da fatura mais antiga em aberto). |
dias_para_vencer | número | Dias até o vencimento; negativo quando já venceu. |
em_atraso | booleano | true com fatura de renovação vencida e não paga. |
valor_renovacao · ciclo | texto | Valor de cada renovação e o ciclo (mensal). |
fatura_em_aberto | fatura ou null | A fatura de renovação em aberto que vence primeiro. |
suspensao_prevista_em | data ou null | Quando o IP será suspenso se a fatura não for paga. null sem fatura em aberto ou já suspenso. |
encerramento_previsto_em | data ou null | Quando o IP será encerrado (sem volta) se a fatura não for paga. |
| Campo | Tipo | Descrição |
|---|---|---|
id | número | Número da fatura. |
status | texto | em_aberto, paga, cancelada, reembolsada, em_cobranca ou outro. |
total · a_pagar | texto | Valor total e quanto ainda falta pagar. |
moeda · vencimento | texto · data | Moeda e data de vencimento. |
tipo | texto | ip ou credito (nas rotas de faturas). |
servicos | lista de números | Serviços (IPs) cobrados na fatura. |
| Campo | Tipo | Descrição |
|---|---|---|
copia_e_cola | texto | O código PIX copia e cola. |
qr_code_png_base64 | texto | Imagem PNG do QR Code em base64, sem o prefixo data:. Para exibir: <img src="data:image/png;base64,…">. |
valor | texto | Valor do PIX. |
expira_em | data e hora ou null | Validade, quando informada. Expirou? Peça outro na rota /pix. |
Com uma URL cadastrada, cada evento é enviado como POST em JSON. Responda com qualquer status 2xx em até 10 segundos
para confirmar. Sem confirmação, reenviamos depois de 1 min, 5 min, 30 min, 2 h, 12 h e 24 h; depois disso o evento é descartado
(o estado continua consultável pela API). A entrega é "pelo menos uma vez": use o id do evento para ignorar repetições.
POST /sua-url HTTP/1.1
Content-Type: application/json
User-Agent: VittHost-Webhooks/1.0
X-Vitt-Evento: ip.ativo
X-Vitt-Evento-Id: evt_3f9a1c0b7d2e4a6b8c9d0e1f
X-Vitt-Assinatura: t=1792200000,v1=5b2c…e91
{
"id": "evt_3f9a1c0b7d2e4a6b8c9d0e1f",
"tipo": "ip.ativo",
"criado_em": "2026-10-17T02:03:41Z",
"dados": { …pedido… }
}
X-Vitt-Assinatura tem o horário do envio (t, Unix) e v1 = HMAC-SHA256 do texto "<t>.<corpo cru>"
com o segredo do webhook, em hexadecimal. Confira com o corpo cru (antes de decodificar o JSON) e recuse envios com mais de 5 minutos.
<?php
$segredo = getenv('VITT_WEBHOOK_SECRET');
$corpo = file_get_contents('php://input');
$partes = [];
foreach (explode(',', $_SERVER['HTTP_X_VITT_ASSINATURA'] ?? '') as $p) {
[$k, $v] = array_pad(explode('=', trim($p), 2), 2, '');
$partes[$k] = $v;
}
$t = (int) ($partes['t'] ?? 0);
$esperada = hash_hmac('sha256', $t . '.' . $corpo, $segredo);
if ($t <= 0 || abs(time() - $t) > 300 || !hash_equals($esperada, $partes['v1'] ?? '')) {
http_response_code(401);
exit;
}
$evento = json_decode($corpo, true);
// ignore se $evento['id'] já foi processado; senão, trate $evento['tipo']
http_response_code(200);const crypto = require('crypto');
// use o corpo cru: app.use(express.raw({ type: 'application/json' }))
function assinaturaValida(segredo, cabecalho, corpoCru) {
const partes = Object.fromEntries(String(cabecalho || '').split(',').map(p => p.trim().split('=')));
const t = Number(partes.t || 0);
if (!t || Math.abs(Date.now() / 1000 - t) > 300 || !partes.v1) return false;
const esperada = crypto.createHmac('sha256', segredo).update(t + '.' + corpoCru).digest('hex');
return esperada.length === partes.v1.length &&
crypto.timingSafeEqual(Buffer.from(esperada), Buffer.from(partes.v1));
}| tipo | Quando | dados |
|---|---|---|
ip.pago | A fatura do pedido foi paga. O IP começa a ser provisionado. | Pedido |
ip.ativo | O IP está pronto na sua conta Cloud (campo rede preenchido). | Pedido |
ip.falhou | O pedido parou para conferência da nossa equipe (status em_analise). Não é preciso fazer nada; avisamos quando andar. | Pedido |
ip.suspenso | O IP foi suspenso por fatura de renovação em atraso. | Pedido |
ip.bloqueado | O tráfego do IP foi bloqueado na rede por causa da suspensão. | Pedido |
ip.reativado | A fatura em atraso foi paga e o IP voltou a ativo. | Pedido |
ip.desbloqueado | O bloqueio de rede do IP foi retirado. | Pedido |
ip.encerramento_proximo | O IP será encerrado hoje ou amanhã se a fatura não for paga. Último aviso. | Aviso de renovação |
ip.cancelado | O pedido foi cancelado ou o IP foi encerrado. | Pedido |
ip.expirado | O pedido foi cancelado porque a fatura não foi paga no prazo. | Pedido |
fatura.gerada | Foi gerada a fatura de renovação de um IP. | Fatura |
fatura.vencendo | A fatura de renovação vence nos próximos dias (hoje, até 3 dias antes). | Aviso de renovação |
fatura.vencida | A fatura de renovação passou do vencimento sem pagamento. | Aviso de renovação |
fatura.paga | A fatura de renovação de um IP foi paga. | Fatura |
credito.adicionado | Uma fatura de crédito foi paga e o valor entrou na sua conta. | Crédito |
teste | Enviado por POST /v1/webhooks/teste. | {"mensagem": "…"} |
renovacao quando o IP está ativo ou suspenso.{"pedido_id", "servico_id", "ip", "fatura"}.{"pedido_id", "servico_id", "ip", "fatura", "renovacao"}. Cada aviso sai uma vez por fatura e IP.{"fatura", "valor", "faturas_pagas", "credito", "moeda"}: a fatura de crédito paga, as faturas quitadas com o crédito e o saldo depois disso./v1/webhooks/teste#Envia um evento teste para a sua URL e responde 202 com {"evento_id", "url"}. Sem URL cadastrada: 409 sem_webhook.
HTTP/1.1 422 Unprocessable Entity
{ "erro": { "codigo": "valor", "mensagem": "\"valor\" vai de 2.00 a 2000.00 por fatura de crédito." } }| HTTP | codigo | Significado |
|---|---|---|
| 400 | json_invalido | O corpo não é um objeto JSON. |
| 400 | idempotency_key | Falta o cabeçalho Idempotency-Key ou ele está fora do formato. |
| 401 | sem_chave | A chave de API não foi enviada. |
| 401 | chave_invalida | A chave de API não existe ou está errada. |
| 402 | credito_insuficiente | O crédito da conta não cobre o valor. Nada foi criado nem debitado. |
| 403 | revenda_desativada | O acesso da revenda à API está desativado. Fale com o suporte. |
| 404 | rota_inexistente | O caminho ou o método não existe. |
| 404 | nao_encontrado | O pedido ou a fatura não existe ou não é da sua conta. |
| 404 | vps_nao_encontrada | A VPS informada em vps_id não está na sua conta Cloud. |
| 405 | metodo | Método não aceito nesta rota (veja o cabeçalho Allow). |
| 409 | em_andamento | Outra requisição com a mesma Idempotency-Key ainda está sendo processada. Repita em instantes. |
| 409 | referencia_repetida | Já existe pedido com esta referencia. Para reenviar o mesmo pedido, repita a Idempotency-Key. |
| 409 | estado | O pedido não pode ser cancelado no status atual. |
| 409 | sem_fatura_aberta | O pedido não tem fatura em aberto. |
| 409 | fatura_nao_aberta | A fatura não está em aberto. |
| 409 | fatura_de_credito | Fatura de crédito não pode ser paga com crédito. Pague pelo PIX. |
| 409 | sem_webhook | Nenhuma URL de webhook cadastrada para a revenda. |
| 422 | idempotencia_conflito | Esta Idempotency-Key já foi usada com outro corpo. |
| 422 | referencia · pagamento · vps_id · local · valor | O campo do corpo indicado no código está inválido; a mensagem diz o formato esperado. |
| 422 | local_invalido · local_conflito | O local não existe, ou não é o local da VPS informada. |
| 422 | vps_sem_ip_adicional · vps_sem_mac | A VPS não pode receber um IP adicional. |
| 422 | status · tipo · vencidas · vence_em_ate · em_atraso | Filtro de listagem inválido. |
| 429 | muitas_requisicoes | Limite de requisições por minuto. Espere o tempo do cabeçalho Retry-After. |
| 429 | limite_diario | Limite de pedidos em 24 horas da revenda. |
| 500 | erro_interno | Erro do nosso lado; ficou registrado. Repita em alguns minutos com a mesma Idempotency-Key. |
| 503 | indisponivel | A API ou o local estão indisponíveis no momento (veja Retry-After). |
| 503 | pagamento_indisponivel | A cobrança está indisponível no momento. Nada foi criado; repita mais tarde com a mesma Idempotency-Key. |
| 503 | pix_indisponivel | Não foi possível gerar o PIX agora. Peça de novo em alguns minutos. |
Idempotency-Key por operação, gerada e guardada antes de enviar. Em timeout ou erro 5xx, reenvie com a mesma chave: nunca crie um pedido "novo" para tentar de novo.referencia com o id do seu cliente ou serviço, para achar o pedido depois com GET /v1/ips?referencia=….GET /v1/ips?vence_em_ate=7 para avisar seus clientes, e GET /v1/ips?em_atraso=1 para agir antes de encerramento_previsto_em.mensagem do pedido ao seu cliente: ela já está escrita para isso.Dúvidas ou pedido de chave: abra um ticket na central do cliente. Para gerenciar VPS da conta Cloud, veja também a API do Virtualizor para revenda.