> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basaltic.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# IPs dedicados e pools

> Aloque endereços de envio, gerencie a associação entre pools e aqueça o tráfego.

IPs dedicados pertencem à sua conta. Um IP pode ficar sem pool ou pertencer a um pool e mudar de pool sem ser liberado. Um pool agrupa endereços para conjuntos de configuração; ele não é dono das alocações.

<span id="allocate-and-group-addresses" />

## Alocar e agrupar endereços

<Tabs>
  <Tab title="Console">
    Abra Email e **IP pools** para criar um pool. Em **Dedicated IPs**, solicite um endereço e, opcionalmente, escolha o pool. O endereço será alocado para você. Abra a aba **Member IPs** de um pool para vincular ou desvincular endereços alocados.
  </Tab>

  <Tab title="API">
    Crie um pool com `POST /v1/ip-pools`:

    ```json theme={null}
    {"name":"transactional","description":"Transactional sending"}
    ```

    Solicite um endereço com `POST /v1/dedicated-ips`:

    ```json theme={null}
    {"ip_pool":"transactional"}
    ```

    Omita `ip_pool` para deixar a alocação sem pool. O serviço escolhe o endereço; clientes não informam um endereço IP nessa solicitação.
  </Tab>

  <Tab title="CLI">
    Salve as solicitações JSON da aba API, em ordem, como `request-1.json`, `request-2.json`. Use a conta e a região configuradas.

    ```bash theme={null}
    basaltic email ip-pool create --from-file request-1.json
    basaltic email dedicated-ip request --from-file request-2.json
    ```
  </Tab>

  <Tab title="Go">
    Salve as solicitações JSON da aba API, em ordem, como `request-1.json`, `request-2.json`. Configure credenciais, conta e região pelas variáveis de ambiente do SDK.

    ```go theme={null}
    package main

    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"os"

    	basaltic "github.com/basaltic-sh/sdk-go"
    	"github.com/basaltic-sh/sdk-go/email"
    )

    func readJSON(path string, value any) error {
    	data, err := os.ReadFile(path)
    	if err != nil {
    		return err
    	}
    	return json.Unmarshal(data, value)
    }

    func run() error {
    	ctx := context.Background()
    	cfg, err := basaltic.NewConfig(ctx)
    	if err != nil {
    		return err
    	}
    	client := email.New(cfg)
    	var request1 email.CreateIPPoolRequest
    	if err := readJSON("request-1.json", &request1); err != nil {
    		return err
    	}
    	result1, err := client.CreateIPPool(ctx, &request1)
    	if err != nil {
    		return err
    	}
    	fmt.Printf("%+v\n", result1)
    	var request2 email.RequestDedicatedIPRequest
    	if err := readJSON("request-2.json", &request2); err != nil {
    		return err
    	}
    	result2, err := client.RequestDedicatedIP(ctx, &request2)
    	if err != nil {
    		return err
    	}
    	fmt.Printf("%+v\n", result2)
    	return nil
    }

    func main() {
    	if err := run(); err != nil {
    		fmt.Fprintln(os.Stderr, err)
    		os.Exit(1)
    	}
    }
    ```
  </Tab>
</Tabs>

Atualize a associação com `PATCH /v1/dedicated-ips/{dedicated_ip_id}`. Uma string em `ip_pool` seleciona um pool por UUID, nome ou CRN; `null` desvincula; a omissão preserva a associação. O `ip_pool` opcional da resposta é um ResourceRef.

<span id="warmup" />

## Aquecimento

Os estados de aquecimento são `new`, `warming` e `warm`. Um endereço novo começa fora da rotação ativa de envio. Inicie o aquecimento antes de esperar que o pool o selecione. A porcentagem de aquecimento controla a elegibilidade em relação à capacidade compartilhada de envio; ela não é um limite fixo de mensagens por segundo.

O aquecimento automático avança com dias UTC completos em que houve envios bem-sucedidos pela alocação. O tempo ocioso, sozinho, não o faz avançar. A sequência padrão é 1%, 2%, 4%, 8%, 16%, 32%, 64% e 100%. Consulte `warmup_percentage` e `warmup_started_at` em vez de presumir que a idade do endereço significa que ele está pronto.

<span id="detach-delete-and-release" />

## Desvincular, excluir e liberar

Desvincular um IP mantém sua alocação. Excluir um pool deixa seus IPs sem pool e remove os vínculos dos conjuntos de configuração com ele. Liberar um IP devolve a alocação e impede sua seleção futura. São operações diferentes. Use a zona de perigo do recurso para excluir ou liberar.

Um conjunto de configuração sem um endereço elegível no pool pode usar IPs compartilhados da plataforma. Consulte `outbound_ip` da mensagem enviada e as [métricas de Email](/pt/email/metrics) para entender o tráfego e os resultados.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.