curl -X POST "https://api.scanova.io/bulk-operation/generate/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-F "name=September event QR batch" \
-F "file=@event-qrs.xlsx" \
-F 'auto_deactivate={"expire_on":"2026-12-31T23:59:59Z"}'
{
"operation_id": "bo-8f3a1c",
"message": ["Your file is being processed. We'll email you once it's ready."]
}
Bulk Operations
Bulk-generate QR Codes
POST /bulk-operation/generate/
POST
/
bulk-operation
/
generate
/
curl -X POST "https://api.scanova.io/bulk-operation/generate/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-F "name=September event QR batch" \
-F "file=@event-qrs.xlsx" \
-F 'auto_deactivate={"expire_on":"2026-12-31T23:59:59Z"}'
{
"operation_id": "bo-8f3a1c",
"message": ["Your file is being processed. We'll email you once it's ready."]
}
Creates many QR Codes from an uploaded sheet, asynchronously, on the Management API host (
api.scanova.io), authenticated with your raw Management API key.
POST https://api.scanova.io/bulk-operation/generate/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
string
required
A label for this operation, shown in List bulk operations.
file
required
The filled-in sheet, one row per QR Code. The first row’s
qr code id column supplies the template QR — its category and field schema are what every other row is validated against.integer
A custom domain id to use for the generated QR Codes’ short links.
string
Design pattern data applied to all generated QR Codes, typically JSON encoded as a string.
object
Optional auto-deactivation rule applied to all generated QR Codes:
expire_on/activate_on (future ISO-8601 datetimes) and/or expire_on_scan_count (positive integer).integer
A folder id to save the generated QR Codes into.
curl -X POST "https://api.scanova.io/bulk-operation/generate/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-F "name=September event QR batch" \
-F "file=@event-qrs.xlsx" \
-F 'auto_deactivate={"expire_on":"2026-12-31T23:59:59Z"}'
{
"operation_id": "bo-8f3a1c",
"message": ["Your file is being processed. We'll email you once it's ready."]
}
This is asynchronous
The200 response confirms the job was accepted, not that the QR Codes exist yet — the actual work runs on a background worker. Poll List bulk operations (filter locally by operation_id) and watch status (new → completed/partially_completed/failed) and progress, then read result_file/log_file once done. The account also gets an email notification on completion.
400 for an invalid file/columns, a missing or invalid template QR, or exceeded quota (BULK_OPERATION or TOTAL_QR_CODES). 403 if the account lacks the BULK_OPERATION quota, has an inactive plan, or lacks BULK_OPERATION_CAN_GENERATE permission.
Related
- Bulk-generate QR Codes (v2 templates) — the v2-template equivalent.
- Validate a bulk operation file — check the file before spending this call.
- Download a sample file — where to start the sheet from.
- List bulk operations — poll for completion.
- Management API overview — the auth scheme and quota rules that apply to this endpoint.
Authorizations
Send your Management API key as the raw value of the Authorization header — no "Bearer " or "Token " prefix, and no other characters. Example: Authorization: 401f7ac837da42b97f613d789819ff93537bee6a. A header containing more than one space-separated part is rejected outright. Requests also require the request's Host header to be the management API host (e.g. api.scanova.io) — the same key sent to the regular API host will not authenticate.
Response
Generation started.
Was this page helpful?