ShopEazydevelopers
API referenceMerchant API BetaWhats App

Channel health and how many chats are waiting

Beta
Credentials
  • OAuth access token
Scopes
orders:read
GET
/v1/merchant/stores/{storeId}/whatsapp

Access: OAuth scope orders:read; not write-gated.

Authorization

merchantOAuth orders:read
headerAuthorizationBearer <token>

OAuth 2.1 (authorization code + PKCE S256, public clients, dynamic registration) for connected AI apps. Effective power is scopes granted AND the person's role today AND the plan. orders:refund, billing:write and team:write are opt-in on the consent screen. Write implies read for marketing:read and messages:read, so a grant holding marketing:write passes a marketing:read check, and messages:send passes messages:read.

Scope: orders:read

Path Parameters

storeId*string

A store the person can reach. Any other id answers 404, never 403.

Response Body

OK

application/json
  1. response
data*
Example Request
curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/whatsapp' \  -H 'Authorization: Bearer <access_token>'
Example Response
{  "data": {    "status": "not_set_up",    "connected": false,    "canConnect": false,    "number": null,    "webhook": {      "receiving": false,      "configured": true,      "routed": false,      "missing": [],      "detail": "Connect your WhatsApp number first."    },    "catalogue": {      "connected": false,      "syncedAt": null,      "error": null    },    "aiEnabled": false,    "lastError": null,    "lastErrorAt": null,    "waiting": 0  }}

Signed links to upload photos straight to storage POST

For photos too big to send as base64 (a photo the person attached, or one edited in a code sandbox). Returns 1 to 10 short-lived (10 minutes) signed HTTPS PUT links into the business's Library upload area, each with an `uploadId`. PUT the file bytes to `uploadUrl` with plain HTTP (for example `curl -T photo.jpg -H "Content-Type: image/jpeg" -H "x-goog-content-length-range: 1,15728640" "<uploadUrl>"`), sending exactly the returned `headers`: the link only accepts that content type and 1 byte to 15 MB. No browser CORS is involved. Then pass `{ uploadId }` to addPhotos. Links not used within 10 minutes stop working. Storage: refused with 403 `plan_limit` when it would take the Library over the plan's storage. What is already stored stays. Access: OAuth scope `listings:write`; write-gated by the subscription.

Look again for a catalogue on the WhatsApp account POST

Attaching a catalogue to a number is the one step Meta will not let ShopEazy do for a merchant (it needs an admin of their business), so they do it once in WhatsApp Manager and this tells us it is done. It looks for the catalogue again and, when found, syncs the listings to it in the background. `found: false` means there is still none to attach. WhatsApp refusing, in Meta's own words, or no longer accepting the connection (the number has to be connected again), is 422 `provider_error`. WhatsApp down, busy or not answering is 503 `provider_unavailable` with `Retry-After`: nothing was changed, and it is never answered as `found: false`, which only ever means WhatsApp answered and there is still no catalogue. Safe to repeat: it only looks and syncs, and the same `Idempotency-Key` replays the first answer. Access: OAuth scope `settings:write`; owner/admin only; write-gated by the subscription.