Loading

API Client Log

Every API call — which client, what it asked for, what it got back, how long it took and how many rows it returned.

The API client log records calls made against the platform's API — who called, what they asked for, and what happened.

Where to find it

Architect Panel → Activity:

  • Activity Log — the data changes an API call caused
  • Record Read Log — reads, where the datastore has read auditing on

Architect Panel → Integration & Connections:

  • API Clients — the clients whose calls appear here
  • API Server — the server configuration
  • OpenAPI Specification — what the API exposes

What a call records

  • Client — which API key made the call.
  • Method and datastore — what was asked for.
  • Scope — the access the call was made under.
  • Status and outcome — how it ended.
  • Rows returned.
  • Duration in milliseconds.
  • IP address and user agent.
  • Request digest — a fingerprint of the request.
  • Message — detail where something went wrong.

One client per integration

This log is only as useful as your client naming. Five integrations sharing one key produce a log in which every question ends with "but which system was that?".

Separate clients mean you can see one integration's behaviour, revoke it without affecting the others, and hold each to its own scope. It costs nothing to do and cannot be retrofitted to historical entries.

Row counts show intent

An integration fetching a handful of records per call is doing lookups. The same client returning tens of thousands is extracting your database.

Both are legitimate in the right context, but they are different activities, and the row count is what distinguishes them. A change in that pattern — a client that fetched fives now fetching thousands — is worth a question even when every call succeeded.

Duration is your early warning

Durations creeping up over weeks mean a query is outgrowing its data. This is visible here long before anybody reports slowness, because integrations tolerate delays that people would complain about.

Watch the trend rather than individual calls; a single slow call is noise.

Failures in a row mean something changed

Scattered failures are normal. A client failing consistently from a particular moment means something changed — an expired credential, a revoked scope, a caller updated at the other end. The message field usually says which.

Authentication failures deserve particular attention: repeated failures from an unfamiliar address are somebody trying keys.

What it does not record

This log describes the calls. What a call changed is in the Activity Log, and what it read is in the Record Read Log where that datastore has read auditing enabled. An investigation into API activity usually needs at least two of the three.

Housekeeping

API logs grow quickly on a busy integration. There is a scheduled housekeeping task for this — enable it, and set a retention that keeps enough history to see a trend.

Worked example

A partner integration starts failing every call at 09:15 on a Tuesday, with an authentication message. Their client credential had been rotated at their end without telling anybody. Because each partner has their own client, the fault was visibly confined to one integration, and the other six were provably unaffected — which was the first question asked.

Recommendations

  • One API client per integration, always.
  • Watch row counts for changes in pattern, not just for errors.
  • Track duration trends as an early warning.
  • Enable API log housekeeping and set retention deliberately.