Seyaha exposes two inbound webhook endpoints that your platform can call to push
updates in real time. Both are authenticated via the x-webhook-secret header.
Authentication
Every webhook call must include your integration’s webhook_secret:
x-webhook-secret: 64hex-char-secret-from-registration
The secret is generated when you create the integration and shown once. Store it
in a secure secrets manager (e.g. AWS Secrets Manager, HashiCorp Vault).
If your webhook secret is compromised, delete the integration and recreate it.
There is no rotate-in-place endpoint — a new integration generates a new secret.
Sync trigger webhook
Tells Seyaha to pull a fresh copy of your entire product catalog.
POST /api/v1/partner-integrations/{id}/sync/trigger
When to call it: Whenever products are added, removed, or have significant metadata
changes (title, pricing, options).
curl -X POST \
"https://api.seyaha.net/api/v1/partner-integrations/$INTEGRATION_ID/sync/trigger" \
-H "x-webhook-secret: $WEBHOOK_SECRET"
Response:
{ "success": 1, "data": { "synced": 42, "skipped": false } }
Availability notify webhook
Pushes a single availability slot update to Seyaha without triggering a full catalog pull.
Use this for real-time capacity and status changes.
POST /api/v1/partner-integrations/{id}/availability/notify
The payload follows the OCTO AvailabilityNotify format:
| Field | Required | Description |
|---|
productId | Yes | OCTO product ID |
optionId | Yes | OCTO option ID |
availabilityId | Yes | OCTO availability slot ID |
localDateTimeStart | Yes | ISO 8601 datetime with timezone offset |
status | No | AVAILABLE / LIMITED / SOLD_OUT / CLOSED |
vacancies | No | Remaining spots |
capacity | No | Total slot capacity |
curl -X POST \
"https://api.seyaha.net/api/v1/partner-integrations/$INTEGRATION_ID/availability/notify" \
-H "x-webhook-secret: $WEBHOOK_SECRET" \
-H "Content-Type: application/json" \
-d '{
"productId": "product_abc",
"optionId": "option_xyz",
"availabilityId": "avail_001",
"localDateTimeStart": "2026-07-15T10:00:00+03:00",
"status": "LIMITED",
"vacancies": 3,
"capacity": 20
}'
Response:
{ "success": 1, "data": { "updated": true } }
Fallback behavior
If Seyaha cannot match productId + optionId to an existing activity or variation in its
database, updated is false and Seyaha automatically triggers a full background sync
for the integration. This means you never need to worry about notify calls arriving before
a full sync has run — the system self-corrects.