Skip to content

Import licence keys

POST/licences/import

Costs 2 rate-limit points · Rate limits

Import licence keys from CSV text (csv), as the Licence keys page's Import does. Columns are matched by header: key (Licence Key, License Key or Key), tag (Tag, Tags or Tags linked) and status. Only the key column is required; without a tag column the keys are imported untagged. column_mapping {key, tag, status} gives 0-based column indexes instead. Keys whose status column says assigned or used are skipped.

The whole file is rejected (422, one error per bad line) when any row has an empty key, or an empty tag in a tag column; nothing is written then. Up to 5 MB of text.

Also searched asimport keys from csvupload a csv of licence keysbulk import license keys

Request body

  • csvstringRequired
    Example: key,tag ABCD-EFGH-IJKL-0003,ebook-2026 ABCD-EFGH-IJKL-000…
  • column_mappingany

Errors

401

Missing or invalid API key.

422

The request failed validation, or sent a key the action does not take (code: "unknown_parameters" with unknown and accepted). Nothing was saved.

429

Rate limited. Cost-weighted per API key, shared with API v1: a read costs 1 point, a write 2, 40 points per fixed 60-second window. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix time the window ends); a 429 adds Retry-After (seconds), retry_after, retryable: true and a next_step in the body. A 429 did nothing: wait retry_after seconds, then send the same request again. The budget is per key, so every tool or script using the key shares it; prefer one list call with per_page over many single reads.

Every error has the same shape: see Errors.

POST/licences/import
curl -X POST "https://app.filemonk.io/api/v2/external/licences/import" \
  -H "X-Auth-Token: $FILEMONK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "csv": "key,tag\nABCD-EFGH-IJKL-0003,ebook-2026\nABCD-EFGH-IJKL-0004,ebook-2026\n"
  }'
Response
No body