← Back to schema index

BeneficiaryImportJob

Bulk beneficiary import job. Lifecycle: `pending` → `parsing` → `preview_ready` → `committing` → `completed` (or `failed` / `cancelled`). Wrapped under `{ type, id, attributes }` following JSON:API format.

ExtendsJsonApiResourceBase

Properties

FieldTypeDescription
typestringJSON:API resource type. Always `beneficiary_import`.
idstringNumeric job ID expressed as a string (JSON:API format).
attributesobjectImport job fields.
plan_capobjectActive-beneficiary allowance of the plan and current occupancy of the authenticated account.
maxintegerActive-beneficiary cap. `-1` means uncapped.
currentintegerNumber of saved active beneficiaries, regardless of the archived filter.
requiredintegerNumber of slots needed to create or reactivate accounts in the import job.
exceededboolean`true` when the import job needs new slots and exceeds the available allowance.
statusstringJob status — `pending`: Uploaded, awaiting parsing; `parsing`: Extracting rows; `preview_ready`: Ready for user review; `committing`: Persisting confirmed rows; `completed`: Commit finished; `failed`: Non-recoverable failure (see `error_code`); `cancelled`: Cancelled by the user.
file_formatstringFormat of the uploaded file. Accepted: `csv`, `xls`, `xlsx`, `txt`, `json` or `pdf`.
parse_modestringFile reading mode — `template`: Follows the canonical headers; `free`: Free-form, the system infers the structure.
total_rowsintegerNumber of rows extracted from the file. Only available once the status is `preview_ready` or later.
valid_countintegerNumber of rows without errors, ready to be committed.
correctable_countintegerNumber of rows with errors that can be corrected. They are persisted unless the user rejects them.
fatal_countintegerNumber of rows that cannot be processed with their current data. They are not persisted and are skipped on commit.
duplicate_countintegerNumber of rows detected as duplicates within the job. Those with `duplicate_account` are skipped on commit, unless the account is archived, in which case it is reactivated; those with `duplicate_alias` are persisted with a suffix on the alias.
committed_countintegerRows effectively persisted in the beneficiary list. Available once status is `completed`.
skipped_countintegerNumber of rows skipped while the job was running. They are the fatal ones and the `duplicate_account` ones with no possible reactivation.
llm_invokedboolean`true` when the AI engine was used during parsing to resolve ambiguous rows in free-form mode.
error_codestring | nullStable code of the job failure. `null` when it did not end in `failed`. For example, `file_corrupt` or `empty_file`.
error_summarystring | nullReadable summary of the job failure. `null` when it did not end in `failed`. Card numbers appear masked.
created_atstring (date-time)ISO 8601 timestamp in UTC with an explicit `Z` suffix; for example, `"2026-05-01T05:14:38Z"`. The `*_at`, `*_end`, `*_start`, and `*_date` fields follow this format. `meta.datetime` describes the same contract in the response.
parsed_atstring | nullDate and time when the file reading finished, in ISO 8601 UTC. `null` while it has not finished.
committed_atstring | nullDate and time when the commit started, in ISO 8601 UTC. `null` while it has not been committed.
completed_atstring | nullDate and time of completion, in ISO 8601 UTC. `null` while it has not finished.

Used in operations

  • GET /v1/beneficiaries/imports/{id}
  • GET /v1/beneficiaries/imports/{id}/preview

Referenced by schemas