Jobs
Jobs are read-only records of flow, export, and import executions, created by the platform whenever a run occurs. A parent flow job aggregates the run's counters while child export/import jobs carry per-step counts, errors, and artifacts. Use these endpoints to monitor running jobs, inspect job families, download result files, and cancel or purge runs.
Job schema
Returns jobs matching the given query-parameter filters, up to 1001 per page in descending createdAt order. Use createdAt_lte on the last record's createdAt (minus 1 ms) to page forward.
There are two query modes depending on the type parameter:
Parent jobs (
typeomitted,flow,retry, orbulk_retry) — pass at least one of_integrationId,_flowId,_exportId,_importId,_flowJobId,createdAt_gte, orcreatedAt_lteto scope the query. Omitting all filters returns all jobs in the account.Child jobs (
type=exportortype=import) — requires_flowJobIdor a resource ID filter (_exportId/_importId). Returns the export/import sub-jobs within a parent flow job.
Date filters accept ISO 8601, plain date, or epoch milliseconds. When combining numError_gte/numError_lte with _integrationId, use full ISO 8601 with millis (plain-date format may be rejected). To page forward, take the createdAt of the last record, subtract 1 ms, and pass it as createdAt_lte.
Active jobs (queued or running) are pinned to the top of the first page even when they fall outside the date filters; canceling jobs are not pinned. Account for this when paging — the first page can contain records older filters would otherwise exclude.
Filter by integration ID. Satisfies the required-param check.
6842261335b64c0bcb308e4fFilter by export ID. Satisfies the required-param check.
69f54d6a3469e3f5597848a1Filter by import ID. Satisfies the required-param check.
69e9953d7a8373d88147b5ecFilter by flow ID. Satisfies the required-param check.
69f54d6b7009ea11abad707aFilter by parent flow-job ID. Satisfies the required-param check.
Required when querying child jobs (type=export or type=import).
69f54d6f47185f8c7a500597Comma-separated list of flow IDs to match. Works as an additional
filter but does not satisfy the required-param check alone.
flowId_in (without underscore) is accepted as an alias.
69f54d6b7009ea11abad707a,69e83e7a75f7f8c14a12916eComma-separated list of status values to match (e.g.
completed,failed). Works as an additional filter but does
not satisfy the required-param check alone.
completed,failedReturn jobs created at or before this timestamp. Accepts ISO 8601, plain date, or epoch milliseconds. Satisfies the required-param check.
2026-05-02T01:03:51.757ZReturn jobs created at or after this timestamp. Accepts ISO 8601, plain date, or epoch milliseconds. Satisfies the required-param check.
2026-05-01T00:00:00.000ZFilter by job status.
Filter to jobs with success count ≤ this value.
100Filter to jobs with success count ≥ this value.
1Filter to jobs with ignore count ≤ this value.
10Filter to jobs with ignore count ≥ this value.
1Filter to jobs with error count ≥ this value. When combined with
_integrationId, the query may reject plain-date createdAt
values — use full ISO 8601.
1Filter to jobs with error count ≤ this value. Same date-format
caveat as numError_gte.
10Filter by job type. flow, retry, and bulk_retry are
parent-level jobs; export and import are child jobs (require
_flowJobId or a resource-ID filter). Unrecognized values silently
return an empty response.
Array of job records matching the filters.
A job represents one execution of a flow/export/import (or a retry) in integrator.io. Jobs are read-only records created by the platform when executions occur.
Parent jobs (type: flow) carry aggregate counters; child jobs (type: export or import)
carry per-step counters -- do not sum both to avoid double-counting. _exportId on a parent
flow job references the page-generator export, not all exports in the flow.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZJob type.
Current job status.
Integration id this job belongs to (if applicable).
6842261335b64c0bcb308e4fFlow id this job belongs to (if applicable).
69f54d6b7009ea11abad707aExport id. Present on child export jobs and also on parent flow jobs (where it references the first page-generator export).
69f54d6a3469e3f5597848a1Import id for import child jobs (if applicable).
69e9953d7a8373d88147b5ecThe export or import resource ID for this child job. Present on child
jobs (type: export or type: import) — check type to determine
whether this references an export or import resource.
69f54d6c1e7f3a22cc7848b2If this is a retry job, the original job id being retried.
69e9820a12e2a80e73166a8aParent flow job id (for child jobs).
69f54d6f47185f8c7a500597Owner user id for the job.
Parent job id (used for branched flows / hierarchy).
69f54d6f47185f8c7a500597Bulk retry parent job id (if applicable).
69e981ee18808f3e5ed1b2fdWhen execution started.
2026-05-02T01:03:43.640ZWhen execution ended.
2026-05-02T01:03:51.757ZWhen errors for the job were fully resolved (if applicable).
2026-05-02T02:15:00.000ZLast time the job executed work (may differ from createdAt/startedAt).
2026-05-02T01:03:51.757ZWhen the job should be purged from primary storage.
2026-06-01T01:03:43.577ZWhen the job's analytics data expires.
2026-06-01T01:03:43.577ZWho/what triggered the job (free-form string).
schedulerWho/what requested cancellation (free-form string).
userGroups multiple related jobs for a single flow execution.
70f3bd04a01142b29031e36ccff9242bTotal number of errors produced by the job (including resolved ones).
Use numOpenError for the count of currently unresolved errors.
10Number of unresolved errors (equivalent to numError - numResolved).
This is the value dashboards surface as "errors needing attention."
10Number of resolved errors.
Number of errors resolved by the adaptor.
Number of successful records/pages.
10Number of ignored records/pages.
Legacy field used by retry logic. May be deprecated.
Number of pages generated by an export/page generator.
10When true, all export pages have been generated.
Number of pages processed by downstream imports.
10Branch/router index for branched flows (if applicable).
When true, this job is eligible for retry.
Effective logging mode for this job, resolved from the flow's logging.mode
and the account-level logging preference. Common values: basic (default),
off, on, debug.
basicWhen true, indicates the last page-generator job in the sequence. Internal use only.
No jobs match the given filters.
Required query parameters are missing or invalid.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/jobs HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6f47185f8c7a500597",
"type": "flow",
"status": "completed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69f54d6b7009ea11abad707a",
"_exportId": "69f54d6a3469e3f5597848a1",
"startedAt": "2026-05-02T01:03:43.640Z",
"endedAt": "2026-05-02T01:03:51.757Z",
"createdAt": "2026-05-02T01:03:43.640Z",
"lastModified": "2026-05-02T01:03:51.757Z",
"lastExecutedAt": "2026-05-02T01:03:51.757Z",
"numSuccess": 10,
"numError": 10,
"numOpenError": 10,
"numResolved": 0,
"numIgnore": 0,
"numExport": 0,
"numPagesGenerated": 10,
"numPagesProcessed": 10,
"doneExporting": false,
"logMode": "basic",
"flowExecutionGroupId": "70f3bd04a01142b29031e36ccff9242b",
"purgeAt": "2026-06-01T01:03:43.577Z",
"clickhousePurgeAt": "2026-06-01T01:03:43.577Z"
},
{
"_id": "69e9820a12e2a80e73166a8a",
"type": "flow",
"status": "failed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69f54d6b7009ea11abad707a",
"_exportId": "69f54d6a3469e3f5597848a1",
"startedAt": "2026-04-20T14:22:18.000Z",
"endedAt": "2026-04-20T14:22:25.412Z",
"createdAt": "2026-04-20T14:22:18.000Z",
"lastModified": "2026-04-20T14:22:25.412Z",
"lastExecutedAt": "2026-04-20T14:22:25.412Z",
"numSuccess": 0,
"numError": 5,
"numOpenError": 5,
"numResolved": 0,
"numIgnore": 0,
"numExport": 0,
"numPagesGenerated": 1,
"numPagesProcessed": 1,
"doneExporting": true,
"logMode": "basic",
"flowExecutionGroupId": "a3b1c2d4e5f6071829304050",
"purgeAt": "2026-05-20T14:22:18.000Z"
}
]Returns a paginated list of currently in-progress jobs for the dashboard -- jobs whose status is one of queued, running, or canceling. Jobs that have reached a terminal state (completed, failed, canceled, retried) are not returned; use POST /v1/flows/runs/stats for run history.
The request body contains all filters -- there are no query-string parameters. Narrow to a specific flow or integration with _flowIds / _integrationIds (AND-combined).
Request body for POST /v1/jobs/current.
The UI uses this to fetch in-progress jobs for the dashboard.
Optional filter to only return jobs for these integration ids.
Optional filter to only return jobs for these flow ids.
Optional filter by application ids.
Optional category filter (e.g., edi).
ediOptional filter for jobs with createdAt/time greater than this epoch milliseconds.
1745366400000Optional filter for jobs with createdAt/time less than or equal to this epoch milliseconds.
1746147600000One page of in-progress jobs.
Response envelope for POST /v1/jobs/current.
No in-progress jobs match the filter.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
POST /v1/jobs/current HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}{
"jobs": [
{
"_id": "69e9958f815ae7eae3d9146b",
"type": "retry",
"_importId": "69e9953d7a8373d88147b5ec",
"_flowId": "69e99544f3a2ac489d0f7953",
"status": "queued",
"numSuccess": 0,
"numError": 0,
"numResolved": 0,
"numOpenError": 0,
"createdAt": "2026-04-23T03:44:15.515Z",
"lastModified": "2026-04-23T03:44:15.532Z"
}
]
}Returns per-flow aggregate run statistics — one element of stats[] per flow that has at least one run matching the request filter. Each aggregate carries totals (numRuns, numSuccess, numError, numIgnore), the currently-open error count (numOpenError), resolution attribution (numResolvedByAuto / numResolvedByUser), average runtime (avgRuntime), and timestamps (lastExecutedAt, lastErrorAt) plus a minimal inlined flow{} object for rendering.
The Celigo dashboard uses this to paint its "All flows" summary in one call. Filters (_flowIds, _integrationIds, time_gt, time_lte, …) narrow which runs are rolled up into each aggregate — they do not filter which flows appear; flows with zero matching runs are simply omitted.
The window is the contract. When time_gt is omitted the endpoint applies its default window (approximately the last 24 hours) rather than aggregating all history — runs older than the window silently drop out of every aggregate. Send time_gt explicitly for any other range.
For individual job records rather than aggregates, use GET /v1/jobs?_flowId=.... For in-progress jobs, use POST /v1/jobs/current.
Request body for POST /v1/flows/runs/stats. Shares its filter shape with POST /v1/jobs/current
(_integrationIds, _flowIds, time_gt, time_lte, …), but the response is a set of
per-flow aggregates rather than individual job records. Filters narrow which runs are rolled
up into each aggregate.
Omitting time_gt does not mean "all history" — the endpoint falls back to the dashboard's
default window (approximately the last 24 hours), and runs older than that silently drop out
of every aggregate. Send time_gt (epoch milliseconds) explicitly for any other range.
Optional filter to only return jobs for these integration ids.
Optional filter to only return jobs for these flow ids.
Optional filter by application ids.
Optional category filter (e.g., edi).
ediOptional filter for jobs with createdAt/time greater than this epoch milliseconds.
1745366400000Optional filter for jobs with createdAt/time less than or equal to this epoch milliseconds.
1746147600000One page of per-flow aggregates.
One page of per-flow run-statistics aggregates. Despite the endpoint's location under flows/runs/,
each element of stats[] is not an individual job record — it's the aggregated summary for one
flow across all matching runs (counts, timings, and the most recent timestamps). The dashboard uses
this to render its per-flow "last run / success rate / open errors" cards in a single call.
To list individual job records (one per run), use GET /v1/jobs?_flowId=... instead.
No runs match the filter on any flow within the queried window (the ~24-hour default when no time_gt was sent).
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
POST /v1/flows/runs/stats HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}{
"stats": [
{
"_flowId": "69497fc443fc1f9a03d31bd9",
"_integrationId": "69496f01615f724066afaac2",
"numRuns": 91,
"numPages": 92,
"numSuccess": 184,
"numError": 0,
"numIgnore": 0,
"numOpenError": 3,
"numResolvedByAuto": 7,
"numResolvedByUser": 0,
"avgRuntime": 172327.86,
"lastExecutedAt": "2026-04-23T02:51:52.551Z",
"lastErrorAt": "2026-04-21T10:51:13.221Z",
"flow": {
"_id": "69497fc443fc1f9a03d31bd9",
"name": "Shopee",
"_integrationId": "69496f01615f724066afaac2",
"integrationName": "Shopee"
}
},
{
"_flowId": "69e83e7a75f7f8c14a12916e",
"numRuns": 2,
"numPages": 8,
"numSuccess": 276,
"numError": 0,
"numIgnore": 0,
"numOpenError": 0,
"numResolvedByAuto": 0,
"numResolvedByUser": 0,
"avgRuntime": 20904.5,
"lastExecutedAt": "2026-04-22T03:27:00.491Z",
"flow": {
"_id": "69e83e7a75f7f8c14a12916e",
"name": "New flow"
}
}
]
}Returns job families for an array of job ids, in one request. Each item in the response array has the same shape as a single GET /v1/jobs/{_id}/family call (a parent job with inlined children).
Size limit: 1000 ids per request. The server rejects requests with more than 1000 entries with HTTP 403 (not 400) and {code: "invalid_request", message: "Number of objects in the request exceeds maximum allowed limit 1000"}. The Celigo UI chunks at 50 for its own UX reasons, but the API ceiling is 1000.
Mixed-id behavior (asymmetric):
Valid + unknown 24-hex ids in the same array → 200 with only the resolved entries; unknown ids are silently dropped (no
errors[]alongside).All ids unknown → 404 with
{errors: [{code: "invalid_ref", source: "internal", message: "Job not found: <id>"}]}.Any id that isn't a 24-char hex string anywhere in the array → 400
invalid_ref "Please provide a valid _id."— the whole request fails.Duplicate ids are deduped server-side (same id ×N → one entry).
Empty array
[]or non-array body (e.g.{}) → 400invalid_request "Request body should be an ObjectID array.".Missing
Content-Type: application/json→ 415{message: "Content-Type should equal application/json"}.
The response array has no guaranteed ordering; match items by _id rather than by index. Unknown ids are silently dropped -- callers that need to detect missing ids must diff the request and response id sets.
Array of job ids to fetch family information for (max 1000 ids per request).
An array of job families, one per resolved id (unknown ids silently dropped).
Job plus any child jobs (job family view).
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZJob type.
Current job status.
Integration id this job belongs to (if applicable).
6842261335b64c0bcb308e4fFlow id this job belongs to (if applicable).
69f54d6b7009ea11abad707aExport id. Present on child export jobs and also on parent flow jobs (where it references the first page-generator export).
69f54d6a3469e3f5597848a1Import id for import child jobs (if applicable).
69e9953d7a8373d88147b5ecThe export or import resource ID for this child job. Present on child
jobs (type: export or type: import) — check type to determine
whether this references an export or import resource.
69f54d6c1e7f3a22cc7848b2If this is a retry job, the original job id being retried.
69e9820a12e2a80e73166a8aParent flow job id (for child jobs).
69f54d6f47185f8c7a500597Owner user id for the job.
Parent job id (used for branched flows / hierarchy).
69f54d6f47185f8c7a500597Bulk retry parent job id (if applicable).
69e981ee18808f3e5ed1b2fdWhen execution started.
2026-05-02T01:03:43.640ZWhen execution ended.
2026-05-02T01:03:51.757ZWhen errors for the job were fully resolved (if applicable).
2026-05-02T02:15:00.000ZLast time the job executed work (may differ from createdAt/startedAt).
2026-05-02T01:03:51.757ZWhen the job should be purged from primary storage.
2026-06-01T01:03:43.577ZWhen the job's analytics data expires.
2026-06-01T01:03:43.577ZWho/what triggered the job (free-form string).
schedulerWho/what requested cancellation (free-form string).
userGroups multiple related jobs for a single flow execution.
70f3bd04a01142b29031e36ccff9242bTotal number of errors produced by the job (including resolved ones).
Use numOpenError for the count of currently unresolved errors.
10Number of unresolved errors (equivalent to numError - numResolved).
This is the value dashboards surface as "errors needing attention."
10Number of resolved errors.
Number of errors resolved by the adaptor.
Number of successful records/pages.
10Number of ignored records/pages.
Legacy field used by retry logic. May be deprecated.
Number of pages generated by an export/page generator.
10When true, all export pages have been generated.
Number of pages processed by downstream imports.
10Branch/router index for branched flows (if applicable).
When true, this job is eligible for retry.
Effective logging mode for this job, resolved from the flow's logging.mode
and the account-level logging preference. Common values: basic (default),
off, on, debug.
basicWhen true, indicates the last page-generator job in the sequence. Internal use only.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Forbidden. The authenticated caller does not have permission to perform this operation.
Not found. The requested resource does not exist or is not visible to the caller.
Returned when the request is missing the Content-Type: application/json header.
POST /v1/jobs/family HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
[
"69e981ee18808f3e5ed1b2fd",
"69e9820a12e2a80e73166a8a"
][
{
"_id": "69e981ee18808f3e5ed1b2fd",
"type": "flow",
"status": "completed",
"_flowId": "69a9aa5c54e3d9bd11b86d82",
"createdAt": "2026-04-23T02:51:39.812Z",
"lastModified": "2026-04-23T02:52:10.115Z",
"startedAt": "2026-04-23T02:51:40.000Z",
"endedAt": "2026-04-23T02:52:10.000Z",
"numSuccess": 42,
"numError": 0,
"numIgnore": 1,
"children": []
},
{
"_id": "69e9820a12e2a80e73166a8a",
"type": "flow",
"status": "failed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69f54d6b7009ea11abad707a",
"_exportId": "69f54d6a3469e3f5597848a1",
"createdAt": "2026-04-20T14:22:17.804Z",
"lastModified": "2026-04-20T14:22:25.598Z",
"startedAt": "2026-04-20T14:22:18.000Z",
"endedAt": "2026-04-20T14:22:25.412Z",
"numSuccess": 0,
"numError": 5,
"numOpenError": 5,
"numResolved": 0,
"numIgnore": 0,
"children": []
}
]Returns a single job record. Works for both parent jobs (type=flow, retry, bulk_retry) and child jobs (type=export, type=import). For the full parent+children view of a flow run, use GET /v1/jobs/{_id}/family instead. For a multi-job lookup, use POST /v1/jobs/family.
Job id.
69f54d6f47185f8c7a500597The job record.
A job represents one execution of a flow/export/import (or a retry) in integrator.io. Jobs are read-only records created by the platform when executions occur.
Parent jobs (type: flow) carry aggregate counters; child jobs (type: export or import)
carry per-step counters -- do not sum both to avoid double-counting. _exportId on a parent
flow job references the page-generator export, not all exports in the flow.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZJob type.
Current job status.
Integration id this job belongs to (if applicable).
6842261335b64c0bcb308e4fFlow id this job belongs to (if applicable).
69f54d6b7009ea11abad707aExport id. Present on child export jobs and also on parent flow jobs (where it references the first page-generator export).
69f54d6a3469e3f5597848a1Import id for import child jobs (if applicable).
69e9953d7a8373d88147b5ecThe export or import resource ID for this child job. Present on child
jobs (type: export or type: import) — check type to determine
whether this references an export or import resource.
69f54d6c1e7f3a22cc7848b2If this is a retry job, the original job id being retried.
69e9820a12e2a80e73166a8aParent flow job id (for child jobs).
69f54d6f47185f8c7a500597Owner user id for the job.
Parent job id (used for branched flows / hierarchy).
69f54d6f47185f8c7a500597Bulk retry parent job id (if applicable).
69e981ee18808f3e5ed1b2fdWhen execution started.
2026-05-02T01:03:43.640ZWhen execution ended.
2026-05-02T01:03:51.757ZWhen errors for the job were fully resolved (if applicable).
2026-05-02T02:15:00.000ZLast time the job executed work (may differ from createdAt/startedAt).
2026-05-02T01:03:51.757ZWhen the job should be purged from primary storage.
2026-06-01T01:03:43.577ZWhen the job's analytics data expires.
2026-06-01T01:03:43.577ZWho/what triggered the job (free-form string).
schedulerWho/what requested cancellation (free-form string).
userGroups multiple related jobs for a single flow execution.
70f3bd04a01142b29031e36ccff9242bTotal number of errors produced by the job (including resolved ones).
Use numOpenError for the count of currently unresolved errors.
10Number of unresolved errors (equivalent to numError - numResolved).
This is the value dashboards surface as "errors needing attention."
10Number of resolved errors.
Number of errors resolved by the adaptor.
Number of successful records/pages.
10Number of ignored records/pages.
Legacy field used by retry logic. May be deprecated.
Number of pages generated by an export/page generator.
10When true, all export pages have been generated.
Number of pages processed by downstream imports.
10Branch/router index for branched flows (if applicable).
When true, this job is eligible for retry.
Effective logging mode for this job, resolved from the flow's logging.mode
and the account-level logging preference. Common values: basic (default),
off, on, debug.
basicWhen true, indicates the last page-generator job in the sequence. Internal use only.
The _id is not a valid ObjectId.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
No job exists with the given ID.
GET /v1/jobs/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "69f54d6f47185f8c7a500597",
"type": "flow",
"status": "completed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69f54d6b7009ea11abad707a",
"_exportId": "69f54d6a3469e3f5597848a1",
"startedAt": "2026-05-02T01:03:43.640Z",
"endedAt": "2026-05-02T01:03:51.757Z",
"createdAt": "2026-05-02T01:03:43.640Z",
"lastModified": "2026-05-02T01:03:51.757Z",
"lastExecutedAt": "2026-05-02T01:03:51.757Z",
"numSuccess": 10,
"numError": 10,
"numOpenError": 10,
"numResolved": 0,
"numIgnore": 0,
"numExport": 0,
"numPagesGenerated": 10,
"numPagesProcessed": 10,
"doneExporting": false,
"logMode": "basic",
"flowExecutionGroupId": "70f3bd04a01142b29031e36ccff9242b",
"purgeAt": "2026-06-01T01:03:43.577Z",
"clickhousePurgeAt": "2026-06-01T01:03:43.577Z"
}Returns a single job record (as parent) with all of its child jobs inlined under children.
A "job family" maps to one flow execution: the parent is a type: "flow" job and the children are the export / import / retry jobs that ran as part of it. For non-flow jobs (a standalone export run, or a retry), children may be empty.
For fetching many families at once, batch via POST /v1/jobs/family. The parent's counters may not include bulk-retry jobs spawned after the initial run -- aggregate across children for an accurate per-run summary.
Job id. Typically a parent flow job id, but any job id is accepted.
69f54d6f47185f8c7a500597Job family (parent with inlined children).
Job plus any child jobs (job family view).
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZJob type.
Current job status.
Integration id this job belongs to (if applicable).
6842261335b64c0bcb308e4fFlow id this job belongs to (if applicable).
69f54d6b7009ea11abad707aExport id. Present on child export jobs and also on parent flow jobs (where it references the first page-generator export).
69f54d6a3469e3f5597848a1Import id for import child jobs (if applicable).
69e9953d7a8373d88147b5ecThe export or import resource ID for this child job. Present on child
jobs (type: export or type: import) — check type to determine
whether this references an export or import resource.
69f54d6c1e7f3a22cc7848b2If this is a retry job, the original job id being retried.
69e9820a12e2a80e73166a8aParent flow job id (for child jobs).
69f54d6f47185f8c7a500597Owner user id for the job.
Parent job id (used for branched flows / hierarchy).
69f54d6f47185f8c7a500597Bulk retry parent job id (if applicable).
69e981ee18808f3e5ed1b2fdWhen execution started.
2026-05-02T01:03:43.640ZWhen execution ended.
2026-05-02T01:03:51.757ZWhen errors for the job were fully resolved (if applicable).
2026-05-02T02:15:00.000ZLast time the job executed work (may differ from createdAt/startedAt).
2026-05-02T01:03:51.757ZWhen the job should be purged from primary storage.
2026-06-01T01:03:43.577ZWhen the job's analytics data expires.
2026-06-01T01:03:43.577ZWho/what triggered the job (free-form string).
schedulerWho/what requested cancellation (free-form string).
userGroups multiple related jobs for a single flow execution.
70f3bd04a01142b29031e36ccff9242bTotal number of errors produced by the job (including resolved ones).
Use numOpenError for the count of currently unresolved errors.
10Number of unresolved errors (equivalent to numError - numResolved).
This is the value dashboards surface as "errors needing attention."
10Number of resolved errors.
Number of errors resolved by the adaptor.
Number of successful records/pages.
10Number of ignored records/pages.
Legacy field used by retry logic. May be deprecated.
Number of pages generated by an export/page generator.
10When true, all export pages have been generated.
Number of pages processed by downstream imports.
10Branch/router index for branched flows (if applicable).
When true, this job is eligible for retry.
Effective logging mode for this job, resolved from the flow's logging.mode
and the account-level logging preference. Common values: basic (default),
off, on, debug.
basicWhen true, indicates the last page-generator job in the sequence. Internal use only.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/jobs/{_id}/family HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "69f54d6f47185f8c7a500597",
"type": "flow",
"status": "completed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69f54d6b7009ea11abad707a",
"_exportId": "69f54d6a3469e3f5597848a1",
"startedAt": "2026-05-02T01:03:43.640Z",
"endedAt": "2026-05-02T01:03:51.757Z",
"createdAt": "2026-05-02T01:03:43.640Z",
"lastModified": "2026-05-02T01:03:51.757Z",
"lastExecutedAt": "2026-05-02T01:03:51.757Z",
"numSuccess": 10,
"numError": 10,
"numOpenError": 10,
"numResolved": 0,
"numIgnore": 0,
"numExport": 0,
"numPagesGenerated": 10,
"numPagesProcessed": 10,
"doneExporting": false,
"logMode": "basic",
"flowExecutionGroupId": "70f3bd04a01142b29031e36ccff9242b",
"purgeAt": "2026-06-01T01:03:43.577Z",
"clickhousePurgeAt": "2026-06-01T01:03:43.577Z",
"children": [
{
"_id": "69f54d6f47185f8c7a5005e9",
"type": "export",
"status": "completed",
"_parentJobId": "69f54d6f47185f8c7a500597",
"_expOrImpId": "69f54d6a3469e3f5597848a1",
"startedAt": "2026-05-02T01:03:43.813Z",
"endedAt": "2026-05-02T01:03:49.930Z",
"createdAt": "2026-05-02T01:03:43.813Z",
"lastModified": "2026-05-02T01:03:49.930Z",
"lastExecutedAt": "2026-05-02T01:03:49.930Z",
"numSuccess": 10,
"numError": 0,
"numOpenError": 0,
"numResolved": 0,
"numIgnore": 0,
"numExport": 0,
"numPagesGenerated": 10,
"numPagesProcessed": 0,
"logMode": "basic",
"purgeAt": "2026-06-01T01:03:43.577Z",
"clickhousePurgeAt": "2026-06-01T01:03:43.577Z"
},
{
"_id": "69f54d6f47185f8c7a500611",
"type": "import",
"status": "completed",
"_parentJobId": "69f54d6f47185f8c7a500597",
"_expOrImpId": "69f54d6c1e7f3a22cc7848b2",
"startedAt": "2026-05-02T01:03:43.948Z",
"endedAt": "2026-05-02T01:03:51.736Z",
"createdAt": "2026-05-02T01:03:43.948Z",
"lastModified": "2026-05-02T01:03:51.736Z",
"lastExecutedAt": "2026-05-02T01:03:51.735Z",
"numSuccess": 0,
"numError": 10,
"numOpenError": 10,
"numResolved": 0,
"numIgnore": 0,
"numExport": 0,
"numPagesGenerated": 0,
"numPagesProcessed": 10,
"logMode": "basic",
"purgeAt": "2026-06-01T01:03:43.577Z",
"clickhousePurgeAt": "2026-06-01T01:03:43.577Z"
}
]
}Requests cancellation of a running or queued job. The job's status transitions to canceling and, once the platform has stopped in-flight work, to canceled. This is not synchronous — the response returns the updated job record with status: "canceling"; consumers should poll (e.g. GET /v1/jobs/{_id}) to observe the final canceled state.
Only jobs that are still in progress (queued, running, retrying) can be canceled. Canceling a job that is already terminal returns an error.
Cancel at the flow-run (parent) level rather than individual export/import children -- child cancellations can leave the parent in an inconsistent state.
Job id to cancel.
69e9958f815ae7eae3d9146bUpdated job record with status: "canceling".
A job represents one execution of a flow/export/import (or a retry) in integrator.io. Jobs are read-only records created by the platform when executions occur.
Parent jobs (type: flow) carry aggregate counters; child jobs (type: export or import)
carry per-step counters -- do not sum both to avoid double-counting. _exportId on a parent
flow job references the page-generator export, not all exports in the flow.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZJob type.
Current job status.
Integration id this job belongs to (if applicable).
6842261335b64c0bcb308e4fFlow id this job belongs to (if applicable).
69f54d6b7009ea11abad707aExport id. Present on child export jobs and also on parent flow jobs (where it references the first page-generator export).
69f54d6a3469e3f5597848a1Import id for import child jobs (if applicable).
69e9953d7a8373d88147b5ecThe export or import resource ID for this child job. Present on child
jobs (type: export or type: import) — check type to determine
whether this references an export or import resource.
69f54d6c1e7f3a22cc7848b2If this is a retry job, the original job id being retried.
69e9820a12e2a80e73166a8aParent flow job id (for child jobs).
69f54d6f47185f8c7a500597Owner user id for the job.
Parent job id (used for branched flows / hierarchy).
69f54d6f47185f8c7a500597Bulk retry parent job id (if applicable).
69e981ee18808f3e5ed1b2fdWhen execution started.
2026-05-02T01:03:43.640ZWhen execution ended.
2026-05-02T01:03:51.757ZWhen errors for the job were fully resolved (if applicable).
2026-05-02T02:15:00.000ZLast time the job executed work (may differ from createdAt/startedAt).
2026-05-02T01:03:51.757ZWhen the job should be purged from primary storage.
2026-06-01T01:03:43.577ZWhen the job's analytics data expires.
2026-06-01T01:03:43.577ZWho/what triggered the job (free-form string).
schedulerWho/what requested cancellation (free-form string).
userGroups multiple related jobs for a single flow execution.
70f3bd04a01142b29031e36ccff9242bTotal number of errors produced by the job (including resolved ones).
Use numOpenError for the count of currently unresolved errors.
10Number of unresolved errors (equivalent to numError - numResolved).
This is the value dashboards surface as "errors needing attention."
10Number of resolved errors.
Number of errors resolved by the adaptor.
Number of successful records/pages.
10Number of ignored records/pages.
Legacy field used by retry logic. May be deprecated.
Number of pages generated by an export/page generator.
10When true, all export pages have been generated.
Number of pages processed by downstream imports.
10Branch/router index for branched flows (if applicable).
When true, this job is eligible for retry.
Effective logging mode for this job, resolved from the flow's logging.mode
and the account-level logging preference. Common values: basic (default),
off, on, debug.
basicWhen true, indicates the last page-generator job in the sequence. Internal use only.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The job is already in a terminal state and cannot be canceled.
Error code job_already_ended; the message names the job's current
terminal state.
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/jobs/{_id}/cancel HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "69e9958f815ae7eae3d9146b",
"type": "retry",
"_importId": "69e9953d7a8373d88147b5ec",
"_flowId": "69e99544f3a2ac489d0f7953",
"status": "canceling",
"numSuccess": 0,
"numError": 0,
"numResolved": 0,
"numOpenError": 0,
"createdAt": "2026-04-23T03:44:15.515Z",
"lastModified": "2026-04-23T03:45:02.118Z"
}Returns short-lived S3 pre-signed URLs for downloading files produced by the job (e.g. the rows exported to a CSV, an error-record dump, or a page-processor artifact). The URLs are typically valid for ~15 minutes.
If fileIds is omitted in the request body, all of the job's current file artifacts are returned. If provided, only the matching files are included.
Inspect the job's files[] array first (via GET /v1/jobs/{_id}) to discover available file IDs. Jobs with no files (common for import child jobs or jobs past purgeAt) return 204 No Content. File ids are registered per job: if none of the requested fileIds are registered to this job (e.g. the file id belongs to a different job's run), the endpoint also returns 204 No Content with an empty body rather than an error. The URLs expire after approximately 15 minutes -- fetch immediately, do not persist.
Job id whose files should be downloaded.
69f54d6f47185f8c7a500597Request body for POST /v1/jobs/{_id}/files/signedURL.
Provide fileIds to request signed URLs for specific files.
Optional list of job file ids to download.
One or more signed URLs.
Signed URL response for downloading job files.
A single signed URL. Requests that pass fileIds return the signedURLs array instead, even for
a single file — check both fields.
https://integrator-templates.s3.us-east-1.amazonaws.com/694b97c4f4f1f4a1b9d9e001.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Credential=AKIAEXAMPLE123%2F20260613%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260613T120000Z&X-Amz-SignedHeaders=host&X-Amz-Signature=4f9b2c1e8a3d7f0b5c6e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a9d2f4bSigned URLs for the returned files, one per file. Returned as an array even when a single file is
requested via fileIds.
Job has no downloadable files, or none of the requested fileIds are registered to this job; the
response body is empty.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
POST /v1/jobs/{_id}/files/signedURL HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}{
"signedURLs": [
"https://integrator-templates.s3.us-east-1.amazonaws.com/694b97c4f4f1f4a1b9d9e001.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=..."
]
}Deletes all file artifacts associated with the job (exported rows, error-record dumps, page-processor artifacts, etc.) from underlying storage. After a successful call, GET /v1/jobs/{_id} will show an empty files[] array and POST /v1/jobs/{_id}/files/signedURL will return 204 No Content.
The job record itself is retained -- only the files are purged. This is irreversible. The platform also purges files automatically at purgeAt / clickhousePurgeAt; manual purge is only needed for storage-quota management or compliance workflows.
Job id whose files should be purged.
69f54d6f47185f8c7a500597Files purged successfully.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/jobs/{_id}/files HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns a short-lived S3 pre-signed URL pointing to a diagnostic archive (.zip) for the given job. The archive contains server-side traces/logs that Celigo support uses to debug execution failures.
The URL is typically valid for ~15 minutes (enforced by S3). Consumers should fetch the archive immediately rather than storing the URL.
This is distinct from flow execution logs -- use GET /v1/flows/{_id}/jobs/{_jobId}/logs for step-level execution logs. Jobs with no diagnostics (very recent, or past purgeAt) return 204.
Job id.
69e981ee18808f3e5ed1b2fdSigned URL for the diagnostics archive.
Signed URL response for downloading diagnostics for a job.
A single signed URL. Requests that pass fileIds return the signedURLs array instead, even for
a single file — check both fields.
https://integrator-templates.s3.us-east-1.amazonaws.com/694b97c4f4f1f4a1b9d9e001.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Credential=AKIAEXAMPLE123%2F20260613%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260613T120000Z&X-Amz-SignedHeaders=host&X-Amz-Signature=4f9b2c1e8a3d7f0b5c6e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a9d2f4bSigned URLs for the returned files, one per file. Returned as an array even when a single file is
requested via fileIds.
No diagnostics available for this job (archive may be absent or purged).
The job does not support diagnostics downloads (invalid_request) —
diagnostics can only be downloaded for jobs with an associated
diagnostics archive.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/jobs/{_id}/diagnostics HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"signedURL": "https://integrator-templates.s3.us-east-1.amazonaws.com/diagnostics-69e981ee18808f3e5ed1b2fd.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=..."
}Returns the most recent job record(s) for the given flow. Typically one entry (the latest flow run), though the platform may include related retry jobs depending on account configuration. For a richer parent+children view, feed the returned _id into GET /v1/jobs/{_id}/family.
Flow id.
69f54d6b7009ea11abad707aComma-separated list of fields to project into each returned record.
Triggers summary projection: the response contains a minimal identity
set (_id, name, plus resource-specific fields) with the requested
fields added on top. Supports dot notation for nested fields.
Mutually exclusive with exclude.
_integrationId,disabled,lastModifiedComma-separated list of fields to strip from the default response.
Unlike include, does not trigger summary projection — returns the
full record with the named fields removed. Protected identity fields
(e.g. name) cannot be stripped. Mutually exclusive with include.
createdAt,lastModifiedMost recent job(s) for the flow. May be a single-element array.
A job represents one execution of a flow/export/import (or a retry) in integrator.io. Jobs are read-only records created by the platform when executions occur.
Parent jobs (type: flow) carry aggregate counters; child jobs (type: export or import)
carry per-step counters -- do not sum both to avoid double-counting. _exportId on a parent
flow job references the page-generator export, not all exports in the flow.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZJob type.
Current job status.
Integration id this job belongs to (if applicable).
6842261335b64c0bcb308e4fFlow id this job belongs to (if applicable).
69f54d6b7009ea11abad707aExport id. Present on child export jobs and also on parent flow jobs (where it references the first page-generator export).
69f54d6a3469e3f5597848a1Import id for import child jobs (if applicable).
69e9953d7a8373d88147b5ecThe export or import resource ID for this child job. Present on child
jobs (type: export or type: import) — check type to determine
whether this references an export or import resource.
69f54d6c1e7f3a22cc7848b2If this is a retry job, the original job id being retried.
69e9820a12e2a80e73166a8aParent flow job id (for child jobs).
69f54d6f47185f8c7a500597Owner user id for the job.
Parent job id (used for branched flows / hierarchy).
69f54d6f47185f8c7a500597Bulk retry parent job id (if applicable).
69e981ee18808f3e5ed1b2fdWhen execution started.
2026-05-02T01:03:43.640ZWhen execution ended.
2026-05-02T01:03:51.757ZWhen errors for the job were fully resolved (if applicable).
2026-05-02T02:15:00.000ZLast time the job executed work (may differ from createdAt/startedAt).
2026-05-02T01:03:51.757ZWhen the job should be purged from primary storage.
2026-06-01T01:03:43.577ZWhen the job's analytics data expires.
2026-06-01T01:03:43.577ZWho/what triggered the job (free-form string).
schedulerWho/what requested cancellation (free-form string).
userGroups multiple related jobs for a single flow execution.
70f3bd04a01142b29031e36ccff9242bTotal number of errors produced by the job (including resolved ones).
Use numOpenError for the count of currently unresolved errors.
10Number of unresolved errors (equivalent to numError - numResolved).
This is the value dashboards surface as "errors needing attention."
10Number of resolved errors.
Number of errors resolved by the adaptor.
Number of successful records/pages.
10Number of ignored records/pages.
Legacy field used by retry logic. May be deprecated.
Number of pages generated by an export/page generator.
10When true, all export pages have been generated.
Number of pages processed by downstream imports.
10Branch/router index for branched flows (if applicable).
When true, this job is eligible for retry.
Effective logging mode for this job, resolved from the flow's logging.mode
and the account-level logging preference. Common values: basic (default),
off, on, debug.
basicWhen true, indicates the last page-generator job in the sequence. Internal use only.
The flow has no recorded runs.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/flows/{_id}/jobs/latest HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6f47185f8c7a500597",
"type": "flow",
"status": "completed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69f54d6b7009ea11abad707a",
"_exportId": "69f54d6a3469e3f5597848a1",
"startedAt": "2026-05-02T01:03:43.640Z",
"endedAt": "2026-05-02T01:03:51.757Z",
"createdAt": "2026-05-02T01:03:43.640Z",
"lastModified": "2026-05-02T01:03:51.757Z",
"lastExecutedAt": "2026-05-02T01:03:51.757Z",
"numSuccess": 10,
"numError": 0,
"numOpenError": 0,
"numResolved": 0,
"numIgnore": 0,
"numPagesGenerated": 10,
"numPagesProcessed": 10,
"doneExporting": true,
"logMode": "basic",
"flowExecutionGroupId": "70f3bd04a01142b29031e36ccff9242b",
"purgeAt": "2026-06-01T01:03:43.577Z"
}
]Returns the most recent job record(s) across all flows in the given integration. Useful for a top-level status check on an integration. The result is not filtered by status -- inspect each entry's status to distinguish success from failure.
Integration id.
6842261335b64c0bcb308e4fMost recent job(s) for the integration.
A job represents one execution of a flow/export/import (or a retry) in integrator.io. Jobs are read-only records created by the platform when executions occur.
Parent jobs (type: flow) carry aggregate counters; child jobs (type: export or import)
carry per-step counters -- do not sum both to avoid double-counting. _exportId on a parent
flow job references the page-generator export, not all exports in the flow.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZJob type.
Current job status.
Integration id this job belongs to (if applicable).
6842261335b64c0bcb308e4fFlow id this job belongs to (if applicable).
69f54d6b7009ea11abad707aExport id. Present on child export jobs and also on parent flow jobs (where it references the first page-generator export).
69f54d6a3469e3f5597848a1Import id for import child jobs (if applicable).
69e9953d7a8373d88147b5ecThe export or import resource ID for this child job. Present on child
jobs (type: export or type: import) — check type to determine
whether this references an export or import resource.
69f54d6c1e7f3a22cc7848b2If this is a retry job, the original job id being retried.
69e9820a12e2a80e73166a8aParent flow job id (for child jobs).
69f54d6f47185f8c7a500597Owner user id for the job.
Parent job id (used for branched flows / hierarchy).
69f54d6f47185f8c7a500597Bulk retry parent job id (if applicable).
69e981ee18808f3e5ed1b2fdWhen execution started.
2026-05-02T01:03:43.640ZWhen execution ended.
2026-05-02T01:03:51.757ZWhen errors for the job were fully resolved (if applicable).
2026-05-02T02:15:00.000ZLast time the job executed work (may differ from createdAt/startedAt).
2026-05-02T01:03:51.757ZWhen the job should be purged from primary storage.
2026-06-01T01:03:43.577ZWhen the job's analytics data expires.
2026-06-01T01:03:43.577ZWho/what triggered the job (free-form string).
schedulerWho/what requested cancellation (free-form string).
userGroups multiple related jobs for a single flow execution.
70f3bd04a01142b29031e36ccff9242bTotal number of errors produced by the job (including resolved ones).
Use numOpenError for the count of currently unresolved errors.
10Number of unresolved errors (equivalent to numError - numResolved).
This is the value dashboards surface as "errors needing attention."
10Number of resolved errors.
Number of errors resolved by the adaptor.
Number of successful records/pages.
10Number of ignored records/pages.
Legacy field used by retry logic. May be deprecated.
Number of pages generated by an export/page generator.
10When true, all export pages have been generated.
Number of pages processed by downstream imports.
10Branch/router index for branched flows (if applicable).
When true, this job is eligible for retry.
Effective logging mode for this job, resolved from the flow's logging.mode
and the account-level logging preference. Common values: basic (default),
off, on, debug.
basicWhen true, indicates the last page-generator job in the sequence. Internal use only.
The integration has no recorded runs.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/jobs/latest HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6f47185f8c7a500597",
"type": "flow",
"status": "completed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69f54d6b7009ea11abad707a",
"_exportId": "69f54d6a3469e3f5597848a1",
"startedAt": "2026-05-02T01:03:43.640Z",
"endedAt": "2026-05-02T01:03:51.757Z",
"createdAt": "2026-05-02T01:03:43.640Z",
"lastModified": "2026-05-02T01:03:51.757Z",
"numSuccess": 10,
"numError": 0,
"numOpenError": 0,
"numResolved": 0,
"numIgnore": 0,
"logMode": "basic"
},
{
"_id": "69e9820a12e2a80e73166a8a",
"type": "flow",
"status": "failed",
"_integrationId": "6842261335b64c0bcb308e4f",
"_flowId": "69e83e7a75f7f8c14a12916e",
"_exportId": "69e83e7a75f7f8c14a129170",
"startedAt": "2026-04-20T14:22:18.000Z",
"endedAt": "2026-04-20T14:22:25.412Z",
"createdAt": "2026-04-20T14:22:18.000Z",
"lastModified": "2026-04-20T14:22:25.412Z",
"numSuccess": 0,
"numError": 5,
"numOpenError": 5,
"numResolved": 0,
"numIgnore": 0,
"logMode": "basic"
}
]Last updated
Was this helpful?