Gerar link de pareamento
/v1/instances/{id}/pairing-linksdesde M11token adminQuando usar
Gera um link para uma página hospedada pelo próprio servidor (/pair/) que mostra o QR ao vivo e permite parear pelo número de telefone — sem expor o token da instância. O link:
- é assinado (HMAC-SHA256 com a chave data/pairing_key) e registrado no banco; - vale ttl_seconds (60 a 600; padrão 600) ou até o primeiro pareamento concluído; - leva o token no fragmento (#t=...), que o navegador nunca envia ao servidor (não vai para logs de acesso nem para Referer); a página o tira da barra de endereço ao abrir; - pode ser embutido num iframe só nas origens de pairing_frame_ancestors (CSP frame-ancestors; vazio = não pode ser embutido). Há um web component pronto: <script src=".../pair/embed.js"> e <litezap-pair url="...">.
A base do link é public_url (ou o listen_addr). Exige o token admin (ou o do operador); até 20 links vivos por instância. Quando o pareamento termina sai o evento instance.paired com via_link: true.
Autenticação
Exige o token admin. Com um token de instância a resposta é 403 forbidden.
Parâmetros
Caminho
| Nome | Tipo | Descrição |
|---|---|---|
idobrigatório | string | Id da instância (inst_...). |
Corpo (JSON)
| Nome | Tipo | Descrição |
|---|---|---|
ttl_seconds | integer | (padrão 600, 60–600) |
Exemplo
curl -s -X POST "$LITEZAP_URL/v1/instances/$ID/pairing-links" \ -H "Authorization: Bearer $LITEZAP_ADMIN_TOKEN" \ -d '{"ttl_seconds":600}'const res = await fetch("http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/pairing-links", { method: "POST", headers: { Authorization: `Bearer ${process.env.LITEZAP_ADMIN_TOKEN}`, "Content-Type": "application/json" }, body: JSON.stringify({ "ttl_seconds": 600 }),});console.log(res.status, res.status === 204 ? "" : await res.json());import osimport requests
r = requests.post( "http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/pairing-links", headers={"Authorization": f"Bearer {os.environ['LITEZAP_ADMIN_TOKEN']}"}, json={ "ttl_seconds": 600, }, timeout=150,)print(r.status_code, r.json() if r.content else "")package main
import ( "fmt" "io" "net/http" "os" "strings")
func main() { req, _ := http.NewRequest("POST", "http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/pairing-links", strings.NewReader(`{"ttl_seconds":600}`)) req.Header.Set("Authorization", "Bearer "+os.Getenv("LITEZAP_ADMIN_TOKEN")) req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.Status, string(out))}<?phprequire 'vendor/autoload.php'; // composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client(['base_uri' => 'http://localhost:8787']);$res = $client->request('POST', '/v1/instances/inst_7f3a9c2e5b1d4086/pairing-links', [ 'headers' => ['Authorization' => 'Bearer ' . getenv('LITEZAP_ADMIN_TOKEN')], 'json' => [ 'ttl_seconds' => 600, ], 'http_errors' => false,]);echo $res->getStatusCode(), ' ', $res->getBody(), PHP_EOL;Nos exemplos, LITEZAP_URL é a URL base (ex.: http://localhost:8787) e o token vem deLITEZAP_TOKEN (instância) ou LITEZAP_ADMIN_TOKEN.
Resposta
201 Link gerado.
Campos de object
id | string | |
url | string | Página de pareamento com o token no fragmento. |
token | string | O token do link (o mesmo do fragmento). |
expires_at | string |
{ "id": "wEeHr7odSNU0pM_Rb4O5WQ", "url": "https://zap.seu-dominio.com/pair/#t=pl1.wEeHr7odSNU0pM_Rb4O5WQ.1792342931.Yzlm6Nb6zRKq7pSI0XVQSA1OCyKl6le1r4ca4qL63wY", "token": "pl1.wEeHr7odSNU0pM_Rb4O5WQ.1792342931.Yzlm6Nb6zRKq7pSI0XVQSA1OCyKl6le1r4ca4qL63wY", "expires_at": "2026-10-18T17:02:11Z"}Erros
| Código | HTTP | Retentável | O que fazer |
|---|---|---|---|
validation_failed | 400 | não | Corrija o corpo ou os parâmetros; a message diz o campo. |
unauthorized | 401 | não | Envie Authorization: Bearer <token> válido. |
forbidden | 403 | não | Use o token certo (admin, ou o da própria instância). |
instance_not_found | 404 | não | Confira o id da instância. |
Todo erro usa o envelope {"error":{"code","message","retryable"}}. Tabela completa em Erros.
Eventos gerados
Equivalente na Z-API: SDK de conexão / Gerar token do SDK. Veja Migrar da Z-API.
Outras operações de Plataforma: Operação em lote · Listar chaves de API · Criar chave de API · Revogar chave de API · Revogar links de pareamento · Uso da instância

