curl --request POST \
--url https://api.seynlabs.com/v1/ingest \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceId": "b6f1c0de-1f2a-4c3b-9d4e-5a6b7c8d9e0f",
"records": [
{
"recordId": "deal-4471",
"entityType": "deal",
"sourceUpdatedAt": "2026-06-10T14:03:00Z",
"payload": {
"name": "Acme Corp renewal",
"stage": "negotiation",
"amount": 42000,
"owner": "jane.smith@acme.com",
"movedToStageBy": "jane.smith@acme.com"
}
},
{
"recordId": "deal-4472",
"entityType": "deal",
"sourceUpdatedAt": "2026-06-10T15:21:00Z",
"payload": {
"name": "Northwind expansion",
"stage": "closed_won",
"amount": 12500,
"owner": "mark.lee@acme.com"
}
}
]
}
'{
"success": true,
"data": {
"batchId": "9b2e4d1a-7c3f-4e8a-9b1c-2d3e4f5a6b7c",
"sourceId": "b6f1c0de-1f2a-4c3b-9d4e-5a6b7c8d9e0f",
"status": "queued",
"accepted": 2,
"deduplicated": 0,
"rejected": [],
"createdAt": "2026-06-12T16:24:11Z"
},
"meta": {
"requestId": "3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a"
}
}Ingestion
Ingest records
Push a batch of records to a source. Each record is stored verbatim and
deduplicated by content hash (re-sending an unchanged record is a no-op), then
normalized into events asynchronously. Reuse a record’s recordId on update and
Seyn supersedes the prior version instead of duplicating it.
Returns a batchId you can poll with GET /v1/ingest/{batchId}. Up to 500
records and 10 MB per request. Requires an API key with the ingest scope.
POST
/
v1
/
ingest
curl --request POST \
--url https://api.seynlabs.com/v1/ingest \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceId": "b6f1c0de-1f2a-4c3b-9d4e-5a6b7c8d9e0f",
"records": [
{
"recordId": "deal-4471",
"entityType": "deal",
"sourceUpdatedAt": "2026-06-10T14:03:00Z",
"payload": {
"name": "Acme Corp renewal",
"stage": "negotiation",
"amount": 42000,
"owner": "jane.smith@acme.com",
"movedToStageBy": "jane.smith@acme.com"
}
},
{
"recordId": "deal-4472",
"entityType": "deal",
"sourceUpdatedAt": "2026-06-10T15:21:00Z",
"payload": {
"name": "Northwind expansion",
"stage": "closed_won",
"amount": 12500,
"owner": "mark.lee@acme.com"
}
}
]
}
'{
"success": true,
"data": {
"batchId": "9b2e4d1a-7c3f-4e8a-9b1c-2d3e4f5a6b7c",
"sourceId": "b6f1c0de-1f2a-4c3b-9d4e-5a6b7c8d9e0f",
"status": "queued",
"accepted": 2,
"deduplicated": 0,
"rejected": [],
"createdAt": "2026-06-12T16:24:11Z"
},
"meta": {
"requestId": "3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a"
}
}Authorizations
Bearer token from app.seynlabs.com → Settings → API Keys.
Send as Authorization: Bearer sk_live_....
Headers
Optional. Reuse the same key when retrying a batch after a network error so it's processed only once. (Records are also deduplicated by content hash regardless.)
Body
application/json
⌘I