Skip to main content

Authentication

Every API request must be authenticated with your API key. Pass the key in the Authorization header using the Basic scheme, with the key (including its key- prefix) as the credential:

Authorization: Basic key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
note

Unlike standard HTTP Basic auth, you send the raw API key — not a base64-encoded user:password string. Just put Basic followed by your key-... value.

Example request

curl https://api.prolinksqr.com/links \
-H "Authorization: Basic key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

For requests with a body, also set the content type:

curl -X POST https://api.prolinksqr.com/folders \
-H "Authorization: Basic key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "name": "Campaigns" }'

Scopes and permissions

Each endpoint requires a specific scope. A request succeeds only if your key includes that scope (or the catch-all all scope). This table maps every API-key endpoint to its required scope:

Method & pathRequired scope
GET /links, GET /links/:idlinks.read
POST /linkslinks.create
PUT /links/:id, PATCH /links/:idlinks.update
DELETE /links/:id, POST /links/:id/archivelinks.delete
POST /links/:id/pauselinks.pause
POST /links/:id/resumelinks.resume
POST /links/:id/duplicatelinks.create
POST /links/:id/save-templatetemplates.create
GET /folders, GET /folders/:idfolders.read
POST /foldersfolders.create
PUT /folders/:idfolders.update
DELETE /folders/:idfolders.delete
GET /templates, GET /templates/:idtemplates.read
POST /templatestemplates.create
PUT /templates/:idtemplates.update
DELETE /templates/:idtemplates.delete
POST /bulk-generatebulk.create
GET /cafes, GET /cafes/:id (and nested reads)cafe.read
POST /cafescafe.create
PUT /cafes/:id (and nested writes)cafe.update
DELETE /cafes/:idcafe.delete

Auth errors

StatusCause
401Missing Authorization header, malformed key, or the key is inactive/deleted.
403The key is valid but does not include the scope the endpoint requires.
{ "message": "You do not have permission to perform this action." }

Keeping keys safe

  • Treat API keys like passwords. Never commit them to source control or expose them in client-side code.
  • Use a separate key per integration so you can revoke one without affecting others.
  • Rotate keys periodically: create a new key, switch your integration over, then delete the old one.