/collection/items/batchUp to 500 copies in one request, each with its own result: created, existing (its clientKey was used before: nothing added) or failed, with why. Give each row a clientKey and a retry adds only what's missing. A row that doesn't match the schema refuses the whole request (400, errors[] names the row: body.items.<n>.<field>). Counts against the daily bulk quota.
collector.createCopies()collection:writeIdempotency-KeyX-Request-Idobject
1–500 items
200OKA result for each row, in order.
object
createdintegerrequiredexistingintegerrequiredRows whose clientKey you’d used before: nothing added.
failedintegerrequiredresultsarray of objectrequiredindexintegerrequiredThe row’s position in items.
statusenumrequiredcreatedexistingfailedidstring (uuid) or nullrequirederrorobject or nullrequiredWhy it failed: issue_not_found, edition_not_of_issue, currency_mismatch, duplicate_client_key, invalid_copy…
codestringrequireddetailstringrequiredinvalid_requestinvalid_jsoninvalid_idempotency_key
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
invalid_idempotency_key: The Idempotency-Key isn’t 1–255 visible ASCII characters.
unauthorized: Not signed in (no session or token, or an expired one).
idempotency_in_progresscollection_limit
idempotency_in_progress: The first request with this key is still running.
collection_limit: Your collection is at its size limit (250,000 rows unless raised).
payload_too_large: The body is over 4,194,304 bytes, this operation’s limit.
idempotency_key_reused: This key was used for a different request.
rate_limitedtemporarily_blockedquota_exceeded
rate_limited: Over the caller’s limit: the per-minute burst or the per-day quota (RateLimit headers; wait Retry-After seconds).
temporarily_blocked: Too many refused requests in a row: blocked for a while (Retry-After says how long).
quota_exceeded: Over this operation’s daily quota (the "bulk" bucket).
internal: Something went wrong on our side (quote the requestId).