Skip to content

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

    العربية
    On this page

    Messages

    Upload media once, send many times

    POST/v2/media
    • Scope:messages:send
    • Idempotency-Key:optional
    • number key ok— Also accepts the legacy per-number x-api-key, for its own number.
    • uses quota

    Returns a media id valid 24 h on the same number. Also accepts JSON {"numberId", "url"}.

    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.

    multipart/form-data fields

    NameTypeConstraintsDescription
    numberIdoptionalTypestringConstraints—DescriptionThe number that will send the file — an upload can be used by that number only, for 24 hours.
    fileoptionalTypefileConstraints—DescriptionThe file bytes (multipart). The real type is sniffed from the bytes; the file name is never trusted.

    Request

    curl -X POST "https://mursilat.com/api/v2/media" \
      -H "Authorization: Bearer $WASLA_API_KEY" \
      -H "Idempotency-Key: order-1042-confirm" \
      -F numberId="cm1abcd2345efgh6789ijkl" \
      -F file=@logo.png

    Response

    200Example

    200 — application/json
    {
      "mediaId": "med_8f2c1d9a7b3e4f56a1b2c3d4",
      "mimeType": "image/png",
      "size": 48213,
      "fileName": "logo.png",
      "expiresAt": "2026-10-14T08:00:00.000Z",
      "numberId": "cm1abcd2345efgh6789ijkl"
    }

    Response schema

    Fields of the example answer. Expand objects and arrays.

    • responseobject6 fields
      • mediaIdstring "med_8f2c1d9a7b3e4f56a1b2c3d4"
      • mimeTypestring "image/png"
      • sizeinteger 48213
      • fileNamestring "logo.png"
      • expiresAtstring "2026-10-14T08:00:00.000Z"
      • numberIdstring "cm1abcd2345efgh6789ijkl"

    Errors

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

    Errors →

    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.

    multipart/form-data → curl
    The same request with curl
    curl -X POST 'https://mursilat.com/api/v2/media' \
      -H "Authorization: Bearer $WASLA_API_KEY" \
      -H 'Accept: application/json'

    Send this request for real?

    This uses your plan quota or credits.

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