Skip to content

Create a licence

POST/licences

Costs 2 rate-limit points · Rate limits

Add licence keys to the pool (keys, one string each), under a tag when given, as the Licence keys page's Add keys does. Orders still waiting for a key from that pool are served right after.

Keys already in the shop (and repeats within the request) are skipped and counted in skipped_duplicates; send allow_duplicates: true to add them anyway. Keys are deleted on the Licence keys page (or DELETE /licences/:id over REST).

Also searched asadd licence keysupload keyspaste license keysadd keys to tagtop up the key pool

Request body

  • keysarray of stringsRequired
  • allow_duplicatesboolean
  • tagstring
    Example: ebook-2026

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
curl -X POST "https://app.filemonk.io/api/v2/external/licences" \
  -H "X-Auth-Token: $FILEMONK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keys": [
      "ABCD-EFGH-IJKL-0001",
      "ABCD-EFGH-IJKL-0002"
    ],
    "tag": "ebook-2026"
  }'
Response
{
  "created": 2,
  "skipped_duplicates": 0,
  "tag": {
    "name": "ebook-2026",
    "virtual": false,
    "licences": {
      "total": 2,
      "pending": 2,
      "assigned": 0,
      "used": 0
    },
    "digital_products": []
  }
}