Skip to main content
Seyaha runs automatic syncs on your catalog and provides webhook endpoints so you can push updates the moment your inventory changes.

Sync modes

Scheduled full sync

Seyaha runs a nightly full sync of all approved integrations. During a full sync:
  1. GET {base_url}/products is called on your OCTO endpoint
  2. The payload hash is compared to last_sync_hash
  3. If changed: all products and options are upserted; sync.last_sync_at is updated
  4. If unchanged: sync is recorded as skipped: true — no writes occur

Webhook-triggered sync

For real-time catalog updates, call Seyaha’s inbound sync trigger webhook after you make changes to your catalog:
POST /api/v1/partner-integrations/{id}/sync/trigger
x-webhook-secret: <your webhook secret>
This is the recommended approach for keeping Seyaha in sync immediately rather than waiting for the next nightly run.

Availability-only update

For slot-level availability changes (capacity, status, vacancies), use the availability notify webhook instead of triggering a full sync. It’s faster and doesn’t re-fetch the entire catalog.

Checking sync status

cURL
curl "https://api.seyaha.net/api/v1/partner-integrations/$INTEGRATION_ID/sync-log" \
  -H "Authorization: Bearer $PARTNER_JWT"
Response:
{
  "success": 1,
  "data": {
    "sync": {
      "status": "idle",
      "last_sync_at": "2026-06-23T06:00:00.000Z",
      "last_sync_hash": "a3f8c2...",
      "error_message": null
    }
  }
}
sync.statusMeaning
idleNo sync running; last sync completed successfully
syncingSync in progress
errorLast sync failed — see error_message

Triggering a sync from your platform

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": 12, "skipped": false } }
EventAction
Product added or removedTrigger sync/trigger webhook immediately
Product details changed (title, pricing)Trigger sync/trigger webhook
Single slot availability changedSend availability/notify webhook
Nothing changedLet nightly sync handle it