Read event-ingest lifecycle status by trigger and batch ID
Check whether a batch of events you sent to a data workflow has been received, run, skipped or failed.
- Method
- GET
- Path
https://api.returning.ai / v1/ data-workflows/ event-ingests/ status - Permission
- dataWorkflows
- Retries
- Read-only; poll with backoff until the status is final
When to use this
- After you send a batch of trading events to a data workflow, confirm it was received and processed.
- A send timed out, and you need to know whether the batch arrived before you send it again.
- A batch didn't have the effect you expected, and you want the stored failure or skip reason.
Authentication#
- Header
Authorization: Bearer <API_KEY>- Permission
- dataWorkflowsShown in the dashboard as “Data Workflows”
This endpoint needs dataWorkflows, shown in the dashboard as Data Workflows. Use a Community API key and keep it on your server. The key decides the community, so you only see batches sent to your own community's workflows.
Behaviour#
You send a batch of events to a data workflow with a trigger_id and a metadata.batch_id. This endpoint reads where that batch is now. It never sends or runs anything, and it returns counts and a reason, not the rows.
What each status means:
pending,queued,processing: the batch is saved and waiting for, or in, its workflow run. Ask again later.processed: the workflow ran with the batch. This doesn't prove every step in the workflow succeeded; check the workflow's task history in the dashboard when the result matters.skipped: the batch was a repeat. When your trigger has a Batch ID Path set, sending abatch_idagain skips the whole batch;error.messagegives the reason, such asDuplicate batch_id received: <batch_id>.orphaned: the workflow wasn't deployed when the batch came up to run, so it never ran.failed: the run failed.error.messageholds the reason.
After a repeated batch_id is skipped, this endpoint returns the latest delivery, so you see skipped with zero counts even though the first delivery may have been processed. Keep a record of the first result before you retry, and use a new batch_id for a corrected batch.
Request#
Query parameters#
trigger_id you sent the batch to.Rule24 hex characters
Eg"66f000000000000000000603"
metadata.batch_id. Matched exactly, including capitals.RuleNon-empty string
Eg"deposits-2026-09-27-001"
Headers#
dataWorkflows.RuleBearer <API_KEY>
curl --request GET \
--url 'https://api.returning.ai/v1/data-workflows/event-ingests/status?trigger_id=66f000000000000000000603&batch_id=deposits-2026-09-27-001' \
--header 'Authorization: Bearer <API_KEY>'
Response#
A 200 returns the batch's state in data. Branch on data.status, never on message. Missing counts come back as 0 and missing times as null.
Rulesuccess
trigger_id you asked about.batch_id you asked about.processed, skipped, orphaned and failed are final; see Behaviour.Rulepending, queued, processing, processed, skipped, orphaned, failed
null when not recorded.null until the batch is processed.data that were accepted for the workflow. 0 when not recorded.data that were skipped, such as repeats of a record already received. 0 when not recorded.null when there is none.INGEST_FAILED for a failed or orphaned batch, otherwise INGEST_SKIPPED.RuleINGEST_FAILED or INGEST_SKIPPED
Duplicate batch_id received: deposits-2026-09-27-001. Do not branch on it.{
"status": "success",
"message": "Event ingest status fetched successfully",
"data": {
"trigger_id": "66f000000000000000000603",
"batch_id": "deposits-2026-09-27-001",
"status": "processed",
"received_at": "2026-09-27T01:28:35.000Z",
"processed_at": "2026-09-27T01:33:42.000Z",
"accepted_record_count": 2,
"skipped_record_count": 0,
"error": null
}
}
Errors#
The 400, 404 EVENT_INGEST_NOT_FOUND and 500 EVENT_INGEST_STATUS_LOOKUP_FAILED errors carry the code in code. Errors from the API key check carry it in meta.code, except a key without dataWorkflows, which returns 401 with only a message.
Fix the request04
{"message": "Your api key does not have permission to access this action"} with no code: the key lacks dataWorkflows, or it's a personal key. Use a Community API key and add Data Workflows in Settings > Integration > API Keys.INVALID_TRIGGER_IDFix the requesttrigger_id is missing, sent twice, or isn't 24 hex characters. Send the workflow's Production Trigger ID once.MISSING_BATCH_IDFix the requestbatch_id is missing, blank or sent twice. Send the metadata.batch_id of the batch you're checking.AUTHENTICATION_REQUIREDFix the requestAuthorization: Bearer <API_KEY> with a current Community API key.Fix the data02
EVENT_INGEST_NOT_FOUNDFix the datatrigger_id and batch_id. Check both values. A batch you sent a moment ago may not be saved yet, so wait a few seconds and ask again before you send it again.COMMUNITY_NOT_FOUNDFix the dataRetry with backoff02
EVENT_INGEST_STATUS_LOOKUP_FAILEDRetry with backoffAUTHENTICATION_FAILEDRetry with backoff{
"meta": {
"status": "error",
"statusCode": 401,
"code": "AUTHENTICATION_REQUIRED"
},
"message": "API request rejected error.",
"detail": "A valid bearer token or API key is required for this endpoint.",
"solution": "Read error detail and try again."
}