> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://contentful.com/developers/docs/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://contentful.com/_mcp/server. Bulk entry content operations provide an efficient way to create, update, delete, or export multiple entries simultaneously, reducing the number of API calls required for bulk content workflows. This feature is particularly useful when working with large datasets, as it significantly reduces the time and complexity required for handling a larger number of entries. The operation is asynchronous and returns immediately with a job ID that you can use to track progress. For a full in-depth tutorial, see the [Bulk entry content operations tutorial](/developers/docs/tutorials/general/bulk-entry-content-operations). ## Limitations * The maximum number of entries per request is subject to [technical limits](/developers/docs/platform/technical-limits) (currently 10,000 entries per bulk content operation) * Create and update: entries must reference valid content types. Upload files follow standard upload size limits * Export results are capped at 10,000 entries per job * Export: signed download URLs in `result.files[].url` expire after 1 hour * At most, there can only be one bulk operation in flight per space at a time. A new request returns `409 Conflict` while another job is running ## Upload file with entries to create/update/delete > **Info** > > The API base URL for this action is `https://upload.contentful.com` or `https://upload.eu.contentful.com` for EU data residency customers. Uploads multiple entries for bulk creation, update, or deletion. The API returns an `Upload` resource that can be used to trigger a bulk operation. [Upload entries for bulk create](/references/content-management-api/uploads/create-an-upload-resource) To create new entries, omit `sys.id` for an auto-generated ID, or include `sys.id` to use a specific entry ID. If an entry with that ID already exists, the item fails with `EntryExistsError`. [Upload entries for bulk update](/references/content-management-api/uploads/create-an-upload-resource) To update existing entries, include the `sys.id` and `sys.version` fields with the existing entry ID and current version. `sys.version` is required and must match the current entry version. > **Info** > > Updates work like PUT requests and completely overwrite entry fields. Fields omitted from the request are removed from the entry. ## Create bulk operation Creates a bulk operation for entries using an upload ID from a previous bulk entry content upload. The operation processes entries asynchronously and returns immediately with a bulk operation ID. [Create bulk operation](/references/content-management-api/bulk-entry-content-operations/create-bulk-operation) ## Create bulk operation export Creates a bulk operation to export entries matching an optional `query`. See [allowed export query parameters](/developers/docs/tutorials/general/bulk-entry-content-operations#allowed-export-query-parameters) for the supported filters. Omit `query` or pass an empty object to export all entries in the environment, capped at 10,000 entries. Poll `GET .../bulk_operations/{bulk_operation_id}` until the job completes. When `sys.status` is `completed`, `result.files` contains signed URLs for ZIP archives. See [archive contents](/developers/docs/tutorials/general/bulk-entry-content-operations#archive-contents) for the ZIP layout and metadata.json format. [Create bulk operation export](/references/content-management-api/bulk-entry-content-operations/create-bulk-operation-export) ## Get status of all bulk operations Retrieves bulk operations for the specified space and environment (cursor-paginated). Each item in `items` includes `sys` only (no `payload`, `result`, or `error`). [Get all operations](/references/content-management-api/bulk-entry-content-operations/get-all-bulk-operations) ## Get status of a single bulk operation Retrieves the status of a specific bulk operation by ID. [Get single operation status](/references/content-management-api/bulk-entry-content-operations/get-bulk-operation) The `sys.status` field indicates the current state of the operation: | Status | Description | | ------------- | ---------------------------------------------------- | | `in_progress` | The operation is queued or currently being processed | | `completed` | The operation has finished processing successfully | | `failed` | The entire operation failed due to a system error | There is an important distinction between bulk operation errors and individual entry errors. When `sys.status` is `"failed"`, the entire bulk operation failed due to a system error (e.g., the upload file was invalid, the operation timed out, or there was a server error). When `sys.status` is `"completed"`, the bulk operation finished successfully. For **create**, **update**, and **delete** jobs, check `result.items` to see the status of individual entries. Each item has a `status` of `"succeeded"` or `"failed"`. Successful items include an `entity` object with the entry `sys.type` and `sys.id`. Failed items include an `error` object with `sys.id` and `message`. Individual entry failures typically occur due to validation errors (e.g., missing required fields, invalid field values, or content type mismatches). For **export** jobs (`bulkType` `EntriesExport`), a completed job returns `result.files`: signed download URLs for ZIP archives of exported entry JSON. Each file has `url.href` and `url.expiresAt` (URLs expire after 1 hour). A new URL is signed on every `GET`. ## API Docs - Bulk Entry Content Operations [Create bulk operation](https://contentful.com/developers/docs/references/content-management-api/bulk-entry-content-operations/create-bulk-operation.md) - Bulk Entry Content Operations [Create bulk operation export](https://contentful.com/developers/docs/references/content-management-api/bulk-entry-content-operations/create-bulk-operation-export.md) - Bulk Entry Content Operations [Get status of all bulk operations](https://contentful.com/developers/docs/references/content-management-api/bulk-entry-content-operations/get-all-bulk-operations.md) - Bulk Entry Content Operations [Get status of a single bulk operation](https://contentful.com/developers/docs/references/content-management-api/bulk-entry-content-operations/get-bulk-operation.md) ## OpenAPI Specification The raw OpenAPI 3.1 specification for this API is available at: - [OpenAPI JSON](https://contentful.com/developers/docs/openapi.json) - [OpenAPI YAML](https://contentful.com/developers/docs/openapi.yaml)