استخراج صورة رمز QR

عرض صورة كود QR مباشرة لربط الجهاز.

POST
https://api.wawp.net/v2/auth/qr-image?access_token=YOUR_ACCESS_TOKEN&instance_id=Your_Instance_ID&phone_number=201012345678

تسجيل الدخول مطلوب

سجل الدخول لاستبدال المعرفات (Instance ID) ورمز الوصول (Access Token) بمعلومات حسابك الحقيقي لاختبار ال API مباشرة.

تسجيل الدخول
اختبار /v2/auth/qr-image
POSTGET

لا توجد معاملات استعلام مطلوبة

هذه النهاية الطرفية لا تتوقع بيانات في الرابط.

توصيات

  • Embed directly in your frontend without saving to disk for better security.

  • Refresh the image every 30 seconds to avoid showing expired codes.

  • Do not cache this response; always fetch a fresh image.

The Visual Gateway: A Masterclass in QR Image Authentication

The /v2/auth/qr-image endpoint is the gold standard for web-based WhatsApp integrations. It abstracts away the complexity of raw binary data and Base64 decoding, providing a ready-to-use Data URI that can be injected directly into any modern browser environment. This endpoint is specifically tuned for speed and ease of use in React, Vue, and vanilla JS dashboards.


🏗️ Anatomy of the Data URI Response

When you call this endpoint, you receive a JSON response containing a single qr field. This field contains a string prefixed with data:image/png;base64,....

  • The Core Value: This is a high-contrast, optimized PNG image of the WhatsApp pairing code.
  • Frontend Implementation:
    // Example: Updating an image element in Vanilla JS
    fetch('/v2/auth/qr-image', { method: 'POST', body: JSON.stringify({ instance_id, access_token }) })
      .then(res => res.json())
      .then(data => {
        document.getElementById('qr-container').src = data.qr;
      });
    

🛡️ Strategic Best Practices

1. Intelligent UI Polling

Because QR codes refresh frequently (every 20-40 seconds), your UI needs a "Heartbeat."

  • The Strategy: Set an interval to refresh the image every 5-10 seconds. This ensures that when the user finally holds up their phone to scan, the code they see is guaranteed to be within its valid window.
  • Visual UX: Implement a subtle "Pulse" animation or a loading overlay when the image is refreshing to inform the user that the system is keeping the link alive.

2. Mastering the 422 Auto-Recovery State

One of Wawp’s unique features is the Background Engine Healer. If you call this endpoint and the engine is currently de-synced from WhatsApp, it will return a 422 Session Status Not Expected error.

  • The Lifecycle: This response signals that our cloud orchestrator has detected a stall and is currently performing a Stop -> Start sequence for you automatically.
  • Developer Action: Do not show an "Operation Failed" error. Instead, show a message like "Recovering the engine bridge... please wait 15 seconds." After the delay, retry the request—you will likely be greeted with a fresh, working QR code.

3. Cache Management

To prevent accidental exposure of sensitive QR data, this endpoint is served with strict Cache-Control: no-store headers.

  • Warning: Never attempt to bypass these headers. Storing a QR image in a CDN or browser cache is a security risk and will lead to "Failed to scan" errors for the user, as the cached code will be stale.

💡 Developer Use Cases

A. Mobile-Responsive Dashboards

The PNG returned by this endpoint is dynamically generated to be high-contrast and clear even on low-budget smartphone displays. This makes it perfect for "Scan on iPad" or "Scan on Chromebook" scenarios where screen glare can sometimes interfere with lower-quality QR renderers.

B. Onboarding Progress Bars

By monitoring the response of this endpoint in parallel with /v2/session/info, you can build a multi-step onboarding wizard:

  1. Step 1: "Warming up engine" (Poll until Status is SCAN_QR_CODE).
  2. Step 2: "Ready to Scan" (Fetch and display the QR image).
  3. Step 3: "Success!" (Transition to WORKING).

⚠️ Common Pitfalls

  • GET Request Leakage: Avoid using GET requests for this endpoint in production dashboards. Browsers often log GET parameters (like your access_token) in the command history or developer console. Use POST to keep your credentials in the request body.
  • Ignoring the Mimetype: Always ensure your image tag or CSS background-image property correctly handles the data:image/png;base64 prefix. Omitting this part of the string will result in a "Broken Image" icon.

Summary of Capabilities:

  • Instantly retrieve a scan-ready PNG image of the WhatsApp QR code.
  • Leverage the "One-Click" rendering power of Data URIs.
  • Trigger automatic environment healing during state de-syncs.
  • Maintain high security with non-persistent, non-cached visual data.

البارامترات

قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.

محتوى الطلب

يرسل كـ JSON
string

The 12-character ID of the instance

مثال:
string

Your API Access Token

مثال:
string

The full international WhatsApp phone number to link (e.g., 201012345678, 447403653133)

مثال:

برمج بالذكاء الاصطناعي باستخدام Wawp MCP

MCP READY

قم بربط الـ API مباشرة مع Cursor أو Windsurf أو Claude Desktop، ودع الذكاء الاصطناعي يكتب لك كود الربط وينفذه تلقائياً!

طريقة الربط والإعداد

أمثلة الكود

استخدم أمثلة الكود الجاهزة لدمج واجهة برمجة التطبيقات (API) في مشروعك بسرعة وكفاءة. اختر لغة البرمجة والمكتبة التي تفضلها.

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/auth/qr-image";
3const params = new URLSearchParams({
4 "instance_id": "Your_Instance_ID",
5 "access_token": "YOUR_ACCESS_TOKEN"
6}).toString();
7const body = {
8 "phone_number": "201012345678"
9};
10
11fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
12 method: "POST",
13 headers: { "Content-Type": "application/json" },
14 body: JSON.stringify(body)
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 === 400) {
25 console.error("Error 400: طلب غير صالح - معاملات مطلوبة مفقودة");
26 }
27 if (response.status === 400) {
28 console.error("Error 400: طلب غير صالح (تنسيق XML)");
29 }
30 if (response.status === 400) {
31 console.error("Error 400: طلب غير صالح (نص عادي)");
32 }
33 if (response.status === 401) {
34 console.error("Error 401: غير مصرح - مفتاح الوصول غير صالح أو مفقود");
35 }
36 if (response.status === 401) {
37 console.error("Error 401: غير مصرح (تنسيق XML)");
38 }
39 if (response.status === 404) {
40 console.error("Error 404: غير موجود - الجلسة غير موجودة");
41 }
42 if (response.status === 404) {
43 console.error("Error 404: غير موجود (تنسيق XML)");
44 }
45 if (response.status === 500) {
46 console.error("Error 500: خطأ في الخادم الداخلي - فشل غير متوقع");
47 }
48 if (response.status === 500) {
49 console.error("Error 500: خطأ في الخادم الداخلي (HTML)");
50 }
51 if (response.status === 502) {
52 console.error("Error 502: بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي");
53 }
54 if (response.status === 502) {
55 console.error("Error 502: بوابة غير صالحة (تنسيق XML)");
56 }
57 if (response.status === 422) {
58 console.error("Error 422: Unprocessable Entity - Session Status Mismatch");
59 }
60
61 const errorText = await response.text();
62 console.error(`Error ${response.status}: ${errorText}`);
63 })
64 .catch((error) => console.error("Network Error:", error));
عينات تفاعلية
Ln 64, Col 1javascript

الردود المتوقعة

استكشف كافة الردود والنتائج المحتملة من الخادم. قمنا بتوثيق كل كود حالة (Status Code) مع أمثلة للبيانات لتسهيل معالجة الأخطاء والنجاح.

تم استرداد رابط صورة كود QR بنجاح.
النوع:
application/json
string *

Example

{
"qr": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA..."
}
طلب غير صالح - معاملات مطلوبة مفقودة
غير مصرح - مفتاح الوصول غير صالح أو مفقود
غير موجود - الجلسة غير موجودة
Unprocessable Entity - Session Status Mismatch
خطأ في الخادم الداخلي - فشل غير متوقع
بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي
الموضوع السابقاستخراج رمز QR للربط
الموضوع التاليإرسال رمز التحقق (OTP)

Command Palette

Search for a command to run...