Skip to main content
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:
FieldRequiredDescription
productIdYesOCTO product ID
optionIdYesOCTO option ID
availabilityIdYesOCTO availability slot ID
localDateTimeStartYesISO 8601 datetime with timezone offset
statusNoAVAILABLE / LIMITED / SOLD_OUT / CLOSED
vacanciesNoRemaining spots
capacityNoTotal 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.