History
Refusals are listed too: a denial is what answers "it stopped working", and its absence answers nothing.
Authorization
ApiKeyQueryAuthapikey in query
?apikey=<key>. Convenient in a browser or a curl one-liner, which is
how a database is usually fetched; prefer a header elsewhere.
This is the same v2 key as the other two schemes. A v1 credential is a different vocabulary and fails validation here, as it would anywhere.
ApiKeyHeaderAuthX-Api-Key in header
X-Api-Key: <key>. The same v2 key, for clients that do not set a bearer.
BearerAuthbearer token
Authorization: Bearer <key>, with a key from the console. Keys are
default-deny: each operation names the scope it needs, and an existing
key does not gain an operation until that scope is added to it.
Query parameters
limitintegerHow many attempts to return. Clamped to 200.
Default 50 · Min 1 · Max 200
Responses
200application/json
OK
downloadsrequiredarray<object>
dataset_idrequiredstringformatrequiredstringoutcomerequired"ok" | "unauthorized" | "denied" | "expired" | "unknown" | "unavailable"samplerequiredbooleanThe evaluation sample rather than the database itself.
openrequiredbooleanA download of an Open database.
bytesrequiredinteger (int64)Object size at redirect time, NOT bytes delivered: the transfer is a presigned redirect straight to object storage, so we never observe how much of it was taken.
http_statusrequiredintegerapikey_idrequiredstringThe key that made the request. Null when it could not be resolved.
client_iprequiredstringuser_agentrequiredstringcreatedrequiredstring (date-time)TypeScript type
{
downloads: ({
dataset_id: string;
format: string;
outcome: "ok" | "unauthorized" | "denied" | "expired" | "unknown" | "unavailable";
sample: boolean;
open: boolean;
bytes: number | null;
http_status: number | null;
apikey_id: string | null;
client_ip: string | null;
user_agent: string | null;
created: string;
})[];
}401application/json
Missing, invalid, revoked or expired key; the key lacks the
db.download scope; or the key belongs to no active organization.
Each answers the same.
rc: UNAUTHORIZED.
rcrequiredstringA machine-readable result code. Deliberately not an enum: a code added later must stay parseable by a client generated today.
TypeScript type
{
rc: string;
}403application/json
The request comes from an address outside the key's or its
organization's allowed addresses. Change the allowlist or call from an
allowed address: the key itself is fine.
rc: IP_NOT_ALLOWED.
rcrequiredstringA machine-readable result code. Deliberately not an enum: a code added later must stay parseable by a client generated today.
TypeScript type
{
rc: string;
}