Skip to content
Apier.no
Guides

How to read the activity log for your API keys

See every call your Apier API keys and sub-keys made, with the route or tool, the org number, the cost in NOK, the receipt and the key that made it, and export it as CSV.

[Cite this as: Apier.no Docs v0.1.0 — last updated 2026-10-31]

The activity log lists every call your own keys and sub-keys made, newest first. Each entry shows:

FieldWhat it holds
occurred_atWhen the call was recorded.
surfacerest for an /api/v1 call, mcp for an MCP tool call.
routeThe REST route, with the org number shown as {org}, or the MCP tool name.
org_numberThe org number in the REST path, when the path names one.
http_status or tool_statusThe result of the call.
cost_nokWhat the call cost in NOK, when it was debited.
receipt_idThe signed receipt recorded for the call, if any.
key_label and is_subkeyThe key that made the call, and whether it is a sub-key.

The log shows only your own account's calls. It shows what Apier keeps of request logs, which is 30 days, and never keeps anything longer. Calls made before correlation ids were stored, and MCP calls, show no cost.

Step 1 — Open the activity log in the dashboard

Sign in and open /dashboard/activity. The table loads the last 30 days. Choose Load more to read older pages and Download CSV to export what is loaded. In the CSV, a cell that a spreadsheet would read as a formula is prefixed with a single quote.

Step 2 — Read the log from your own code

The same log is served at GET /api/v1/account/activity with your dashboard session cookie. Sub-keys cannot read it: every /api/v1/account route answers 403 SUBKEY_ROUTE_FORBIDDEN to a sub-key.

ParameterMeaning
from, toEurope/Oslo days, YYYY-MM-DD, inclusive, at most 31 days per request (both days count), never in the future.
key_idOnly calls made with this key or sub-key.
routeOnly calls to this REST route (for example /api/v1/company/{org}/authority) or MCP tool.
limitEntries per page, 1 to 200 (default 50).
cursorThe next_cursor of the previous page.

A key_id that is not one of your keys returns an empty page.

{
  "success": true,
  "data": {
    "entries": [
      {
        "occurred_at": "2026-10-30T09:15:02.481Z",
        "surface": "rest",
        "route": "/api/v1/company/{org}/authority",
        "method": "GET",
        "org_number": "999999999",
        "http_status": 200,
        "cost_nok": 0.5,
        "key_label": "invoice-agent",
        "is_subkey": true
      }
    ],
    "next_cursor": null,
    "from": "2026-10-02",
    "to": "2026-10-31",
    "retention_days": 30
  }
}

Step 3 — Page through a long period

When next_cursor is not null, pass it back as cursor with the same filters to read the next page. Entries are ordered by time, newest first, then by id, so a page never repeats an entry from the page before.

Building with an LLM? Read llms.txt for agent-oriented integration guidance.