IPs elásticos
GET /cloud/network/elastic-ips
Escopo do token: ips:read. Recurso: IPs elásticos.
Exemplo de requisição
Seção intitulada “Exemplo de requisição”Os exemplos leem o token da variável de ambiente HALVER_API_TOKEN (um token sc_live_… criado em Desenvolvedores › Tokens de API). Nunca escreva o token no código.
curl "https://dash.halver.com.br/api/v1/cloud/network/elastic-ips?limit=50" \ -H "Authorization: Bearer $HALVER_API_TOKEN"package main
import ( "fmt" "io" "net/http" "os" "time")
func main() { req, err := http.NewRequest(http.MethodGet, "https://dash.halver.com.br/api/v1/cloud/network/elastic-ips?limit=50", nil) if err != nil { panic(err) } req.Header.Set("Authorization", "Bearer "+os.Getenv("HALVER_API_TOKEN")) client := &http.Client{Timeout: 30 * time.Second} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, err := io.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(resp.Status) fmt.Println(string(out))}import os
import requests
resp = requests.get( "https://dash.halver.com.br/api/v1/cloud/network/elastic-ips?limit=50", headers={ "Authorization": f"Bearer {os.environ['HALVER_API_TOKEN']}", }, timeout=30,)resp.raise_for_status()print(resp.json())Parâmetros
Seção intitulada “Parâmetros”Parâmetros de consulta
Seção intitulada “Parâmetros de consulta”-
limitintegerTamanho da página, de 1 a 100. Com
limitoucursora resposta é uma página em ordem de criação (mais antigo primeiro, depois o id) enext_cursoraponta a próxima; sem os dois vem a lista inteira, na ordem de sempre, comnext_cursornulo (compatibilidade). Comcursore semlimit, páginas de 50. De 1 a 100. Veja Paginação. -
cursorstringO
next_cursorda página anterior desta mesma lista (opaco; 400invalid_cursorse não for). Até 200 caracteres. Veja Paginação.
Respostas
Seção intitulada “Respostas”IPs elásticos vivos.
Campos da resposta
-
itemsarray de object obrigatório-
addressstring obrigatórioIPv4 público (/32).
-
apply_errorstring obrigatórioÚltima resposta do gateway a uma mudança que não passou (“” quando não há).
-
contract_idstring (uuid) obrigatório pode ser nulo -
created_atstring (date-time) obrigatório -
first_invoice_idstring (uuid) obrigatório pode ser nulo -
idstring (uuid) obrigatório -
monthly_centsinteger (int64) obrigatório -
regionobject obrigatório-
codestring obrigatório -
idstring (uuid) obrigatório -
namestring obrigatório
-
-
server_hostnamestring obrigatório -
server_idstring (uuid) obrigatório pode ser nuloServidor para onde o IP vai (null = sem servidor).
-
statusstring obrigatóriopending_payment = primeira fatura em cobrança; configuring/moving/releasing = mudança indo para o gateway; failed = o gateway recusou ou não aplicou a tempo (veja apply_error). Um de:
pending_payment,configuring,active,moving,releasing,failed. -
suspended_atstring (date-time) obrigatório pode ser nuloRota retirada por falta de pagamento; o endereço continua reservado e a rota volta quando a fatura é paga.
-
-
next_cursorstring pode ser nuloCursor da próxima página (nulo na última e sem paginação; ausente nas listas da equipe).
{ "items": [ { "address": "198.51.100.20", "apply_error": "", "contract_id": "751e7c9a-fae2-4027-9be3-5728dfce8982", "created_at": "2026-10-20T18:00:00Z", "first_invoice_id": "36d56e13-ffa3-4af3-acc1-14aa538fb0ab", "id": "576fc46b-b2e5-41e7-b9a9-af387899f09a", "monthly_cents": 79900, "region": { "code": "br-mg-1", "id": "8c48d558-f6ba-472a-b7f4-e834d7d06d10", "name": "Minas Gerais" }, "server_hostname": "web-01", "server_id": "307d7f63-0f00-4d4b-bc28-839d359e13a3", "status": "active", "suspended_at": null } ], "next_cursor": null}Todo erro vem como application/problem+json (RFC 9457), com um code estável, a mensagem em português em detail, o motivo de cada campo em errors (nos erros de validação) e o request_id, que você informa ao suporte. Veja a lista completa de códigos.
| Status | Quando | Códigos |
|---|---|---|
| 400 | Requisição inválida (JSON malformado, campo desconhecido, parâmetro inválido ou falha de validação). | validation_failed, invalid_cursor |
| 401 | Não autenticado (token ausente, inválido ou expirado; credenciais inválidas). | auth.unauthorized |
| 403 | Autenticado, mas sem permissão para a área ou a operação. | api_token.insufficient_scope |
{ "type": "about:blank", "title": "Forbidden", "status": 403, "detail": "o token não tem o escopo ips:read; crie um token com esse escopo em Desenvolvedores › Tokens de API", "code": "api_token.insufficient_scope", "request_id": "6f1c0b2a9e4d7c3b5a8f0e1d"}