Scopes

Scopes

Scopes define what an API key may do. Grant only what the integration needs.

How scopes work

When creating a key you choose per area whether it may read (read) or also write (write). Write covers create, update and delete. A request outside the key scopes returns 403.

Available scopes

Available scopes:

ScopeGrants access to
invoices.read / invoices.writeInvoices, quotes, subscriptions (list/detail), payments, mail templates and email tracking
relations.read / relations.writeClients, suppliers, subscription writes, incasso mandate
products.read / products.writeProducts
projects.read / projects.writeProjects and hours
deals.read / deals.writeDeals, pipelines and phases
tickets.read / tickets.writeTickets and messages
notes.read / notes.writeNotes
tasks.read / tasks.writeTasks
expenses.read / expenses.writeExpenses
files.read / files.writeFiles
planning.read / planning.writePlanning
webhooks.writeAppPilot / webhook triggers

Which scopes does my key have?

Ask /v1/me:

bash
curl -sS https://api.appficient.nl/v1/me \
  -H "Authorization: Bearer apf_your_key_here"
json
{
  "data": {
    "surface": "extern",
    "actor": {
      "type": "api_key",
      "label": "Integratie"
    },
    "scopes": [
      "invoices.read",
      "invoices.write"
    ]
  },
  "meta": {}
}

Tip

Start with read

Start with read scopes only. Add write when your integration actually writes. Nothing can go wrong in between.