---
title: "Identify the calling API key"
method: GET
path: "/v1/me"
tags: ["API context"]
---

# Identify the calling API key

`GET /v1/me`

## Request

- Base URL: `https://api.getfinero.com/functions/v1/api`
- URL: `https://api.getfinero.com/functions/v1/api/v1/me`
- Auth: HTTP bearer

Returns the tenant and key metadata for the presented credential. Useful as a connectivity/permission check before other calls. No side effects.

Available to **admin and readonly** API keys (no side effects).

## Response `200`

Success

- object
  - `tenant_id` string, uuid, required: The tenant this API key belongs to. All data is scoped to it.
  - `tenant_name` string, required: Tenant display name.
  - `api_key` object, required
    - `id` string, uuid, required: API key id.
    - `name` string, required: Key name given at creation.
    - `permission` 'admin' | 'readonly', required: admin can call every operation; readonly only side-effect-free ones.
    - `created_at` string, date-time, required: Key creation time (ISO 8601 UTC).
    - `last_used_at` string, date-time, nullable, required: Previous use of this key (ISO 8601 UTC).

## Other responses

- `400`: `validation_failed` — The request failed schema validation. See error.details for field messages.
- `401`: `invalid_credentials` — The credential is malformed or does not match an active key. The response never reveals whether a key identifier exists. `missing_credentials` — No Authorization: Bearer header was sent. `revoked_credentials` — The presented key was revoked. Create a new key in Settings → API.
- `403`: `feature_unavailable` — The tenant's tier does not currently include API access. Feature rollout flags cannot grant this entitlement. `permission_denied` — The key's permission does not allow this operation (readonly keys cannot call admin-only operations).
- `404`: `not_found` — No such resource in YOUR tenant. Ids belonging to another tenant are indistinguishable from missing ones.
- `429`: `rate_limit_exceeded` — Too many requests. Honor the Retry-After header (seconds) before retrying — waiting that long is enough. The RateLimit-* fields on every response say how much headroom is left before this happens; pace against them instead of retrying into a refusal.
- `500`: `internal_error` — Unexpected server error. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/getfinero/apis/finero-public-api.md) · [All operations](https://skmtc.dev/getfinero/apis/finero-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getfinero/apis/finero-public-api/revisions/3d456e222775?raw)
