Galantis communicates with Meta through the WhatsApp Cloud API (Meta Graph API v23.0). All API calls are made byDocumentation Index
Fetch the complete documentation index at: https://docs.digifist.com/llms.txt
Use this file to discover all available pages before exploring further.
MetaGraphClient using the tenant’s encrypted access token. This page documents every endpoint Galantis calls, the operation each performs, and relevant implementation notes.
What this covers
- All Meta Cloud API endpoints Galantis uses
- Request patterns per endpoint category
- How
MetaGraphClienthandles authentication and routing - Rate limiting and throughput considerations
- Media upload protocol
Base URL
All Meta Graph API calls use:v23.0) is the Graph API version Galantis targets. Meta increments API versions periodically — Galantis pins to a specific version to ensure consistent behavior across all API calls.
Message API
Send a WhatsApp message{phone_number_id} path parameter identifies which of the workspace’s connected phone numbers the message is sent from. For workspaces with multiple phone numbers, each send operation specifies the correct phone_number_id for the intended sender.
Request body structure (template message):
template_variables_mapping at send time — each {{N}} placeholder is resolved to its mapped customer, order, or static value before the request is constructed.
Request body structure (session message — free-form text):
Message record and used to match incoming status update webhooks back to the original send.
Template API
Create a message templatemessage_template_status_update webhook rather than through polling, so this endpoint is used primarily for reconciliation rather than routine status tracking.
Delete a template
Media Upload API
Upload media (resumable protocol)- Galantis initiates the upload session with the file size and MIME type
- Meta returns an upload session ID
- Galantis uploads the file data (in chunks for large files)
- Meta returns a media handle on completion
- The media handle is stored on the template header component and submitted with the template Media handles are referenced in template submissions and remain valid as long as the template exists and the WABA connection is active.
| Header type | Accepted formats | Notes |
|---|---|---|
| Image | JPEG, PNG | Minimum 500×500px for catalog images |
| Video | MP4 | |
| Document | Standard PDF format |
Catalog API
Push products to Meta CatalogSyncMetaCatalogJob to push product data from Galantis into the connected Meta Catalog. The {catalog_id} path parameter identifies the specific Meta Catalog associated with the workspace.
Product data is sent as a batch — multiple products are pushed in a single request where possible, reducing API call overhead for large catalogs.
The request payload maps Galantis ProductVariant fields to Meta’s product schema:
title→ product namedescription→ product descriptionprice→ product price (formatted per Meta’s currency requirements)availability→ derived frominventory_quantityimage_link→ product image URL- Variant options → mapped to Meta’s item group and variant structure
PENDING to SYNCED. On failure, the status moves to FAILED with the error response stored for diagnostic review.
Rate limiting and throughput
Message API throughput — WhatsApp enforces per-phone-number message sending limits that scale with the phone number’s quality tier and business verification level. Galantis’sSendCampaignMessagesBatchJob processes recipients in batches that respect these limits. Rate limit errors from the Message API cause the affected batch to be retried.
Template API rate limits — Template creation and status fetching are subject to standard Graph API rate limits. These are unlikely to be encountered in normal usage — template operations are infrequent relative to message sends.
Catalog API rate limits — Bulk product pushes via SyncMetaCatalogJob are subject to Catalog API rate limits. The job is designed to process products in batches sized to avoid exceeding these limits.
MetaGraphClient
MetaGraphClient is the internal HTTP client that handles all Meta API calls. It:
- Resolves the correct tenant’s encrypted access token per request
- Constructs the correct base URL and Graph API version prefix
- Handles API response parsing and error mapping
- Logs API errors for visibility in Laravel Nightwatch
MetaGraphClient, keeping credential management and API versioning centralized.
Related guides
- Authentication — How MetaGraphClient resolves tenant tokens
- Webhooks Reference — Meta webhooks that deliver status callbacks for Message API sends
- Templates — How template submissions map to Template API calls
- Catalog — Meta Catalog — How SyncMetaCatalogJob uses the Catalog API