Skip to content
API PlatformDevelopers
PATCH/v1/short-links/{short_link_id}beta

Change a short link's message

Needs
Send WhatsApp messages; manage templates, quick messages and WhatsApp short links (messaging:write)
Plan
Any plan with API access
Limits
60 a minute per key
Dry run
Yes — a full preview with ?dry_run=true
Undo
Send the old message back.

Changes the message a short link types for the customer. The link and its code stay the same, so links you shared and QR codes you printed keep working and now open the chat with the new message.

The QR image is generated again, as PNG, at a new URL. The number cannot change: create a new link instead.

Try it

Path
Body

The new text: 1–140 characters, plain text (an emoji counts as 2).

Protects against doing it twice if you retry: a retry with the same key gets the first answer back instead of running again.

Test mode (dry run): nothing will change
Turns test mode off for this page only. It switches back when you leave the page.

Code and response

curl -X PATCH 'https://mcp.wa-api.cloud/v1/short-links/sl-12?dry_run=true' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "message": "Hi! I'\''d like to book a table"
}'

The code reads your key from $API_KEY.

Parameters

Parameters
FieldTypeWhat it is
short_link_idrequiredstring | integer · pathThe short link id.

Body

Body fields
FieldTypeWhat it is
messagerequiredstringThe new text: 1–140 characters, plain text (an emoji counts as 2).0–1000 characters

Headers

Headers
FieldTypeWhat it is
AuthorizationrequiredheaderBearer $API_KEY — your API key.
Api-VersionheaderThe API version to use, e.g. 2026-10-01. Default: the version your key is pinned to.one of: 2026-10-01 · pattern ^\d{4}-\d{2}-\d{2}$
Idempotency-KeyheaderAny unique string (8–128 characters). A retry with the same key returns the first answer instead of running twice. Kept 24 hours.pattern ^[A-Za-z0-9._:-]+$ · 8–128 characters

Response 200

The short link with its new message.

Response fields
FieldTypeWhat it is
idrequiredstring
coderequiredstringThe code at the end of the link.
urlrequiredstringThe click-to-chat link (https://wa.me/message/…). Share it, or print its QR code.
messagerequiredstring or nullThe text the customer finds already typed; they can edit it before sending.
qr_image_urlrequiredstring or nullQR code image of the link, hosted by WhatsApp. The link can expire: download and keep your own copy for print.
qr_image_formatrequiredstring or nullPNG or SVG; null when there is no image or its format is not known.one of: PNG, SVG
channelrequiredobject or nullThe WhatsApp number it belongs to.
idrequiredstringWorkspace channel id (as GET /v1/channels lists it).
namerequiredstring or null
phonerequiredstring or nullThe WhatsApp number the link opens a chat with.
created_atrequiredstring or null
updated_atrequiredstring or null
dry_runbooleantrue when this was a dry run: every check ran and nothing changed.

Errors

Errors are application/problem+json. Branch on code.

StatusCodeWhen
400invalid_input

A field is missing or has the wrong format. errors[] points at each field. The message breaks a rule (the same ones as Create a short link).

401unauthenticated

The Authorization header is missing, the key is unknown, expired or revoked.

403entitlement_required

The workspace's plan does not include API access (api_access).

403insufficient_scope

The key does not have the permission this operation needs.

404not_found

No short link with this id in your workspace.

409conflict

Also returned while a request with the same Idempotency-Key is still running.

429rate_limited

The key or workspace went over its rate limit. Wait for Retry-After seconds.

502upstream_error

WhatsApp refused the change (reason: refused_by_whatsapp).

503upstream_unavailable

A service behind the API is briefly unavailable. Safe to retry with backoff.

504timeout

The change did not finish in time. Retry with the same Idempotency-Key: it never runs twice.

Examples

Change the message

Request body

{
  "message": "Hi! I'd like to book a table"
}

Response 200

{
  "id": "sl-12",
  "code": "4PZQX7M2LCKHA1",
  "url": "https://wa.me/message/4PZQX7M2LCKHA1",
  "message": "Hi! I'd like to book a table",
  "qr_image_url": "https://scontent-bom5-2.xx.fbcdn.net/m1/v/t6/An9_qr4PZQX7M2LCKHA1?ccb=10-5&oe=66F00000",
  "qr_image_format": "PNG",
  "channel": {
    "id": "301",
    "name": "Main WhatsApp",
    "phone": "+1 555-555-0100"
  },
  "created_at": "2026-09-12T10:00:00.000Z",
  "updated_at": "2026-09-13T10:00:00.000Z"
}

Operation path

The same operation is also at POST /v1/ops/messaging_update_short_link, with every field in the JSON body.