MostlyQR

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]).

bash
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"
  }'
json
{ "job_id": "imp_abc123", "total": 2, "queued": true }

CSV instead:

json
{ "csv": "destination_url,title\nhttps://example.com/a,Flyer A\nhttps://example.com/b,Flyer B" }

# Poll the job

bash
curl https://mostlyqr.com/api/v1/batch/jobs/imp_abc123 \
  -H "Authorization: Bearer mtq_live_…"
json
{ "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_codes quota are rejected; the job reports per-row errors.
  • For a unique code per physical unit (not per destination), use serialized codes instead.

# Next