table-sources

Get an import run's status

Poll an import's progress. rows_created and rows_updated climb while it runs; status reaches succeeded or failed and stays there.

rows_skipped counts records the run read and left out, split by why: rows_skipped_no_identity came back with no value for the field rows are matched on, rows_skipped_duplicate shared their match value with an earlier record in the same page. The skipped-records route names them. stopped_at_row_limit says the run stopped at the source's row limit with records still unread in the tool, which is not a skip.

get/table-sources/runs/{run_id}/

Request

  • Base URL: https://api.getoneprofile.ai (the document declares no server; this is the origin it was published from)
  • URL: https://api.getoneprofile.ai/table-sources/runs/{run_id}/
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Path parameters

run_idstring uuid required

Response

Successful Response

errorstring nullable required
error_codestring nullable

Classified cause of the failure: unauthorized, rate_limited, server_unavailable, network_error, not_found, pagination_error, bad_request. NULL when the run did not fail.

finished_atstring date-time nullable required
idstring uuid required
identity_fieldstring nullable required

The field records were matched on during this run. Null for a run from before this was recorded; read the source's current identity_field instead in that case.

is_full_relistboolean required

Whether this run asked the provider for everything.

needs_reconnectboolean

Whether fixing this means reconnecting the integration. Only true for a credentials failure, so the prompt keeps its meaning.

rows_createdinteger required
rows_deletedinteger required
rows_skippedinteger required

Records the run read and left out, broken down by the two counts below. Stopping at the row limit is not a skip; see stopped_at_row_limit.

rows_skipped_duplicateinteger required

Of those, records whose match value an earlier, different record in the same page already had; only the first was added.

rows_skipped_no_identityinteger required

Of those, records that came back with no value for the field rows are matched on, so there was no row for them to be.

rows_updatedinteger required
source_idstring uuid required
started_atstring date-time required
status'running' | 'cancelling' | 'cancelled' | 'succeeded' | 'failed' required

Where one import run has got to.

The terminal states are absorbing: a run never leaves them. There is no PENDING here. Unlike a CSV upload, which sits parsed and uncommitted until the user says go, a source run is only ever created at the moment something decides to run it.

CANCELLING is a request, not an outcome. Stopping an import is a database status flip the workflow observes between pages, never a Temporal terminate: a terminate could land mid-page and leave rows half-written with nothing to settle the run, which is exactly the stuck state that blocks every future refresh of the table.

stopped_at_row_limitinteger nullable required

The row limit this run stopped at with records still unread in the tool; null when it read everything it was asked for. Raising the source's row_limit brings the rest in.

sweep_deletionsboolean required

Whether this run was asked to delete rows whose records are gone from the tool. A run that stopped at a row limit (stopped_at_row_limit) deletes nothing, because it has not read the whole tool.

table_idstring uuid required
trigger'initial' | 'manual' | 'scheduled' required

What asked for a run.

Changes

No recorded changes to this operation across all 1 revision of this API.