Skip to content

    Arabic or English · ↑↓ to move · Enter to open · Esc to close

    العربية
    On this page

    Numbers

    Add a number and start pairing

    POST/v2/numbers
    • Scope:numbers:write
    • Idempotency-Key:optional
    • uses quota

    Creates a number slot (your plan’s number limit applies) and returns a QR (raw + PNG data URL), or with pairing.method "code" + phone an 8-character code to type in WhatsApp.

    Parameters

    Headers

    NameTypeConstraintsDescription
    Idempotency-KeyoptionalTypestringConstraints≤ 191 charsDescriptionYour unique id for this operation (≤ 191 visible ASCII). A retry with the same key and body returns the first answer with Idempotent-Replayed: true — it never runs twice. Kept 24 h.
    X-Request-IdoptionalTypestringConstraints—DescriptionOptional: your own request id, echoed back (otherwise we generate req_…). Quote it to support.

    Body

    NameTypeConstraintsDescription
    namerequiredTypestringConstraints≤ 100 charsDescriptionDisplay name inside Mursilat only — customers never see it.
    pairingoptionalTypeobjectConstraints—DescriptionHow to link the phone. Omit for a QR.
    pairing.methodoptionalTypestringConstraintsone of: qr · codedefault qrDescriptionqr returns a QR to scan; code returns an 8-character code to type in WhatsApp (needs pairing.phone).
    pairing.phoneoptionalTypestringConstraints—DescriptionRequired for method: "code" — the number being linked, international digits.

    Request

    curl -X POST "https://mursilat.com/api/v2/numbers" \
      -H "Authorization: Bearer $WASLA_API_KEY" \
      -H "Idempotency-Key: order-1042-confirm" \
      -H "Content-Type: application/json" \
      -d '{
      "name": "فرع المعادي",
      "pairing": {
        "method": "qr"
      }
    }'
    Request — JSON
    {
      "name": "فرع المعادي",
      "pairing": {
        "method": "qr"
      }
    }

    Response

    201Example

    201 — application/json
    {
      "number": {
        "id": "cm1abcd2345efgh6789ijkl",
        "name": "فرع المعادي",
        "phone": null,
        "status": "PAIRING",
        "health": null,
        "numberStatus": "ACTIVE",
        "warmupStage": "WEEK_2",
        "webhook": {
          "configured": true,
          "version": 2,
          "disabled": false
        },
        "createdAt": "2026-10-01T09:00:00.000Z",
        "updatedAt": "2026-10-13T08:00:00.000Z"
      },
      "pairing": {
        "method": "qr",
        "qr": {
          "raw": "2@AbCdEf…",
          "dataUrl": "data:image/png;base64,iVBORw0KGgo…"
        },
        "pairingCode": null,
        "expiresAt": "2026-10-13T08:00:20.000Z",
        "instructions": "On the phone: WhatsApp → Settings → Linked devices → Link a device, then scan."
      }
    }

    Response schema

    Fields of the example answer. Expand objects and arrays.

    • responseobject2 fields
      • numberobject10 fields
        • idstring "cm1abcd2345efgh6789ijkl"
        • namestring "فرع المعادي"
        • phonenull null
        • statusstring "PAIRING"
        • healthnull null
        • numberStatusstring "ACTIVE"
        • warmupStagestring "WEEK_2"
        • webhookobject3 fields
          • configuredboolean true
          • versioninteger 2
          • disabledboolean false
        • createdAtstring "2026-10-01T09:00:00.000Z"
        • updatedAtstring "2026-10-13T08:00:00.000Z"
      • pairingobject5 fields
        • methodstring "qr"
        • qrobject2 fields
          • rawstring "2@AbCdEf…"
          • dataUrlstring "data:image/png;base64,iVBORw0KGgo…"
        • pairingCodenull null
        • expiresAtstring "2026-10-13T08:00:20.000Z"
        • instructionsstring "On the phone: WhatsApp → Settings → Linked devices → Link a device, then scan."

    Errors

    Besides the authentication, rate-limit and validation errors every endpoint can return:

    Errors →

    Number Shield & behaviour

    The QR links a device to your number: treat it as a secret.

    Try it

    Send this request from your browser to the Mursilat API.

    documented example

    Preview — this copy of the docs isn’t on mursilat.com, so the console shows the documented example instead of calling the API.

    Real requests use your real number and plan: they can send WhatsApp messages, spend quota and delete data. (uses quota)

    Kept only in this tab’s memory: never saved, never put in the URL, sent only to mursilat.com. Reloading the page forgets it.

    The same request with curl
    curl -X POST 'https://mursilat.com/api/v2/numbers' \
      -H "Authorization: Bearer $WASLA_API_KEY" \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -d '{"name":"فرع المعادي","pairing":{"method":"qr"}}'

    Send this request for real?

    This uses your plan quota or credits.

    POST https://mursilat.com/api/v2/numbers