Get Contact Profile Picture

Get the profile picture URL of a contact.

GET
https://api.wawp.net/v2/contacts/profile-picture?access_token=123456789&contactId=123456789%40c.us&instance_id=123456789&refresh=true

Authentication Required

Login to swap the placeholders with your real Instance ID and Access Token.

Log In
Test /v2/contacts/profile-picture endpoint
GET
GET

No query parameters required

This endpoint doesn't expect data in the URL.

Best practices

  • Do not use profile pictures for identity verification.

  • Display a generic avatar if the fetch fails.

The Face of the User: Profile Pictures

The /v2/contacts/profile-picture endpoint allows you to retrieve the high-resolution avatar of a WhatsApp user, group, or business.


🖼️ Image Logic

When you request a picture, WhatsApp doesn't send the binary data directly. It provides a signed URL hosted on their CDN (Content Delivery Network).

The Response Format

{
  "id": "12345@c.us",
  "url": "https://pps.whatsapp.net/v/t61.24694-24/..."
}
  • URL Expiry: These URLs are temporary. They expire after a certain period (usually 24-48 hours) or if the user changes their photo.
  • Best Practice: Do not just store the URL string in your database.
    • Option A (Lazy): Re-fetch the URL from this API every time you need to display it.
    • Option B (Robust): Download the image buffer and store it in your own S3 bucket.

🛡️ Privacy & "Missing" Photos

You will often get a 404 Not Found or an empty URL.

Reason 1: Privacy Settings (Most Common)

The user has set "Profile Photo" to "My Contacts" or "Nobody".

  • If you are not saved in their phone's address book, you are not a "Contact". Therefore, WhatsApp refuses to serve the image.
  • Correction: There is no workaround. You must respect the user's choice.

Reason 2: No Photo

The user simply hasn't set a photo. They see the default grey silhouette.

Reason 3: It's You

You cannot fetch your own profile picture via this endpoint (use /v2/profile/me instead).


🔄 Caching & Refresh

Fetch operations are expensive networking calls.

  • Default Behavior: The Wawp API caches the profile picture URL for 24 hours to speed up subsequent requests.
  • Forcing a Refresh: If you suspect the user just changed their photo and you need the new one immediately, pass refresh=true.
    • Cost: This bypasses the local cache and hits WhatsApp servers directly. Use sparingly.

📸 Resolution & Quality

  • Standard: The API attempts to fetch the "Preview" size (roughly 96x96 or 640x640 depending on availability).
  • Full HD: WhatsApp only serves the full-resolution uncompressed image (e.g., 1920x1920) if the user is in your contact list or you are in a chat with them.
  • Groups: Group icons work the same way. The contactId would be 123456@g.us.

❓ FAQ

Q: Can I set the contact's photo? A: No. You cannot change another user's profile picture. You can only change your own (via /v2/profile/picture) or a Group's icon (if you are an admin).

Q: Why does the URL stop working after a day? A: All pps.whatsapp.net links are signed with a time-limited token for security. If you try to load an old URL, you will get a 403 Forbidden.

Q: Can I get the photo of a business? A: Yes. Official Business Accounts (OBA) usually have public profile photos visible to everyone, regardless of "My Contacts" settings.

Request Parameters

Configure the parameters required to interact with this endpoint. All query and body arguments are listed below with their details.

URL Parameters

Passed in the URL query string
string

Your unique WhatsApp Instance ID

Example:
string

Your API Access Token

Example:
string

The unique ID of the contact

Example:
boolean

Whether to bypass cache and refresh the picture

Example:

Request Samples

Use these ready-to-go code snippets to integrate our API into your project quickly and efficiently. Choose your preferred language and library.

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/contacts/profile-picture";
3const params = new URLSearchParams({
4 "instance_id": "123456789",
5 "access_token": "123456789",
6 "contactId": "123456789@c.us",
7 "refresh": "true"
8}).toString();
9
10
11fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
12 method: "GET",
13 headers: { "Content-Type": "application/json" },
14
15})
16 .then(async (response) => {
17 if (response.ok) {
18 const data = await response.json();
19 console.log("Success:", data);
20 return data;
21 }
22
23 // Error Handling
24 if (response.status === 401) {
25 console.error("Error 401: Unauthorized - Invalid or Missing Access Token");
26 }
27 if (response.status === 400) {
28 console.error("Error 400: Bad Request - Invalid Parameter Format");
29 }
30 if (response.status === 500) {
31 console.error("Error 500: Internal Server Error - Unexpected Failure");
32 }
33
34 const errorText = await response.text();
35 console.error(`Error ${response.status}: ${errorText}`);
36 })
37 .catch((error) => console.error("Network Error:", error));
Interactive Samples
Ln 37, Col 1javascript

Expected Responses

Explore all possible responses and outcomes from the server. We have documented each status code with data examples to make success and error handling easier.

Profile picture retrieved
application/json
string *
string *

Example

{
"id": "123456789@c.us",
"url": "https://pps.whatsapp.net/v/t61.24694-24/..."
}
Bad Request - Invalid Parameter Format
Unauthorized - Invalid or Missing Access Token
Internal Server Error - Unexpected Failure
Previous TopicCheck Phone on WhatsApp
Next TopicCreate/Update Contact

Command Palette

Search for a command to run...