Foto de perfil do contato
/v1/instances/{id}/contacts/{jid}/picturedesde M9token da instância ou adminQuando usar
URL da foto de perfil de um contato ou grupo (CDN do WhatsApp; expira depois de um tempo) e seu id. Com download=1 devolve o JPEG, baixado pelo worker (pelo proxy da instância) e guardado em cache por 1h. Sem foto, ou foto escondida pela privacidade do contato: 404 not_found (nunca 502). Consulta o WhatsApp: gasta a cota de consultas de contato (30/min, 1000/dia); a URL fica em cache por 10 min.
Autenticação
Aceita o token da instância (só a própria instância) ou o token admin. Um token de outra instância recebe 403 forbidden (ou 404 not_found em webhooks de outra instância).
Parâmetros
Caminho
| Nome | Tipo | Descrição |
|---|---|---|
idobrigatório | string | Id da instância (inst_...). |
jidobrigatório | string | JID do chat (...@s.whatsapp.net, ...@g.us, ...@lid) ou número com DDI. Prefira o jid devolvido por GET /chats ou check-numbers. |
Query
| Nome | Tipo | Descrição |
|---|---|---|
preview | "1" | Miniatura em vez da imagem inteira. |
download | "1" | Devolve o arquivo (image/jpeg) em vez do JSON. |
Exemplo
curl -s "$LITEZAP_URL/v1/instances/$ID/contacts/$JID/picture" \ -H "Authorization: Bearer $LITEZAP_TOKEN"const res = await fetch("http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/contacts/5511999999999@s.whatsapp.net/picture", { headers: { Authorization: `Bearer ${process.env.LITEZAP_TOKEN}` },});console.log(res.status, res.status === 204 ? "" : await res.json());import osimport requests
r = requests.get( "http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/contacts/5511999999999@s.whatsapp.net/picture", headers={"Authorization": f"Bearer {os.environ['LITEZAP_TOKEN']}"}, timeout=150,)print(r.status_code, r.json() if r.content else "")package main
import ( "fmt" "io" "net/http" "os")
func main() { req, _ := http.NewRequest("GET", "http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/contacts/5511999999999@s.whatsapp.net/picture", nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("LITEZAP_TOKEN")) 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('GET', '/v1/instances/inst_7f3a9c2e5b1d4086/contacts/5511999999999@s.whatsapp.net/picture', [ 'headers' => ['Authorization' => 'Bearer ' . getenv('LITEZAP_TOKEN')], '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
200 A foto. Também: image/jpeg.
Campos de Picture
jid | string | |
id | string | Muda quando a foto muda. |
url | string | CDN do WhatsApp; expira. |
type | "image" | "preview" |
{ "jid": "5511999999999@s.whatsapp.net", "id": "1729241234", "url": "https://pps.whatsapp.net/v/t61.24694-24/...", "type": "image"}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). |
not_found | 404 | não | Confira o id do recurso (mensagem, chat, contato, mídia ou webhook). |
instance_not_found | 404 | não | Confira o id da instância. |
instance_not_connected | 409 | depende | Confira o estado da instância; se logged_out, pareie de novo. |
instance_banned | 409 | não | Número banido: apague a instância. |
rate_limited | 429 | sim | Espere e tente de novo com backoff. |
worker_error | 502 | sim | Tente de novo com backoff; se persistir, veja o log do servidor. |
worker_timeout | 504 | sim | Tente de novo; a instância pode estar sobrecarregada ou reconectando. |
Todo erro usa o envelope {"error":{"code","message","retryable"}}. Tabela completa em Erros.
Equivalente na Z-API: Pegar imagem do contato. Veja Migrar da Z-API.
Outras operações de Contatos: Listar contatos · Consultar contato · Recado e perfil comercial do contato · Bloquear contato · Desbloquear contato · Listar bloqueados

