Bulk Import Other Types

Learn about the input objects, result types, and enums used by the bulk import items API

🚧

Only available in API versions 2026-07 and later

The types below are used by backfill_items, ingest_items, and fetch_job_status.


BulkImportFailureReason

Enum returned in failure_reason when a job ends in REJECTED or FAILED.

Enum valueDescription
ACCOUNT_CAPACITY_EXCEEDEDAccount capacity was exceeded (includes the ingest hourly item create/update budget check).
AUTHORIZATION_FAILEDCaller authentication or authorization failed.
BOARD_CAPACITY_EXCEEDEDBoard reached its maximum item capacity.
FILE_TOO_LARGEUploaded file exceeded the 150 MB limit.
INTERNAL_ERRORUnexpected server error occurred.
INVALID_UPLOADCSV parse or validation failed (for example bad header, wrong column separator, malformed rows, or invalid multi-level subitems hierarchy rows).
PERMISSION_DENIEDCaller lacks the required permission for the operation.

BulkImportState

Enum returned in status describing the current state of a job.

Enum valueDescription
COMPLETEDProcessing finished. Check counts for partial failures.
FAILEDJob failed during processing. See failure_reason and failure_message.
PROCESSINGJob is processing rows.
REJECTEDJob was rejected before processing completed.
UPLOAD_PENDINGWaiting for the CSV upload to upload_url, or upload still in flight.

ItemsJobItemCounts

Per-stage row counters returned inside ItemsJobStatus.counts.

FieldTypeDescription
createdIntItems created in monday.com. For multi-level subitems hierarchy imports, this includes created parent and child items.
failedIntValid rows (passed validation) that failed during execution.
invalidIntRows that failed validation. For MLS hierarchy imports, this can include rows with no populated level column, multiple populated level columns, or hierarchy errors.
skippedIntRows skipped (for example by on_match: { behaviour: SKIP } in regular item imports). MLS hierarchy imports are create-only and should not use SKIP.
submittedIntTotal rows submitted in the uploaded file.
updatedIntExisting items updated (for example via on_match: { behaviour: UPSERT } in regular item imports). MLS hierarchy imports are create-only and should not use UPSERT.

ItemsJobStatus

Returned from fetch_job_status through the JobStatus union. The full field listing lives on the Ingest items API reference; a short summary follows.

FieldTypeDescription
statusBulkImportStateCurrent job state.
countsItemsJobItemCountsPer-stage row counters.
progress_percentageIntApproximate completion percentage (0–100).
failure_reasonBulkImportFailureReasonMachine-readable failure reason.
failure_messageStringHuman-readable failure details. null for INTERNAL_ERROR.
fully_importedBooleantrue only when COMPLETED and counts.failed = 0.
report_createdBooleanWhether a downloadable report exists.
report_urlStringTime-limited report URL (10-minute expiration).

JobStatus

Union returned by fetch_job_status. Today, bulk CSV imports resolve to ItemsJobStatus. The union is forward-compatible - additional job kinds may be added in future versions.

union JobStatus = ItemsJobStatus

OnMatchInput

Input object accepted by ingest_items only. Not supported by backfill_items.

OnMatchInput applies to regular item imports. For MLS hierarchy imports, omit on_match. MLS imports always create new hierarchy items and do not perform matching, skipping, or updating.

Matching is evaluated across the whole board. The group_id argument on ingest_items controls where newly created items are inserted; it does not scope matching for updates or skips.

FieldTypeDescription
behaviourOnMatchBehaviour!Match strategy: UPSERT updates a matching item; SKIP skips the row.
match_column_idString!Column ID used to detect matches.

For supported match column types, see the Ingest items API reference.

OnMatchBehaviour

Enum used in OnMatchInput.behaviour.

Enum valueDescription
SKIPSkip importing the row when a matching item exists.
UPSERTUpdate the existing matched item; otherwise create a new item.

UploadJobInit

Response object from backfill_items and ingest_items.

FieldTypeDescription
job_idIDIdentifier for fetch_job_status.
upload_urlStringPre-signed URL for the CSV PUT upload. Expires after 10 minutes. Do not send x-amz-checksum-crc32 as a request header when uploading to this URL.