Batch
Create thousands of dynamic links in one call. Batch creation is asynchronous: you
submit the set, get a job_id back immediately, and poll for completion. Same engine and
dynamic_codes quota as a single create. Pro+.
# Submit a batch
Pass either a JSON links array or a csv string (RFC-4180, header row
destination_url[,title][,folder]).
curl https://mostlyqr.com/api/v1/batch/links \
-H "Authorization: Bearer mtq_live_…" \
-H "Content-Type: application/json" \
-d '{
"links": [
{ "destination_url": "https://example.com/a", "title": "Flyer A" },
{ "destination_url": "https://example.com/b", "title": "Flyer B" }
],
"folder_id": "fld-spring"
}'
{ "job_id": "imp_abc123", "total": 2, "queued": true }
CSV instead:
{ "csv": "destination_url,title\nhttps://example.com/a,Flyer A\nhttps://example.com/b,Flyer B" }
# Poll the job
curl https://mostlyqr.com/api/v1/batch/jobs/imp_abc123 \
-H "Authorization: Bearer mtq_live_…"
{ "job_id": "imp_abc123", "status": "done", "total": 2, "created": 2, "progress": 1 }
status is one of queued, running, done, failed. Once done, the new links
appear via GET /v1/links.
# Notes
- The job is chunked and resumable — large imports won’t time out the request.
- Rows over your
dynamic_codesquota are rejected; the job reports per-rowerrors. - For a unique code per physical unit (not per destination), use serialized codes instead.
# Next
- Serialized codes · the full API reference.