Skip to the documentation

Caller

Who a key acts as and what it may do.

Who is calling

GET/api/v1/me

Who a key acts as, and what it may do. Both kinds of key may ask, with profile:read. A personal key acts as the person who made it. An organization key belongs to the organization, and acts as the admin who made it: key.kind says which, org names the organization, and the person is the admin whose workspace its clients, briefs and matches are saved to. The answer also says what the key may do and when it expires, and never returns the key itself. The first call to make to check that a key is the one you meant and carries what you expect.

An API key carrying the scope named here, or a signed-in session.

Scope
profile:read
Key kinds
PersonalOrganization

Required and optional fields, allowed values and errors, as the page shows them.

Examples

curl "https://liviamatch.com/api/v1/me" \
  -H "Authorization: Bearer $LIVIA_API_KEY"

Responses

200

The caller.

A personal key
{
  "data": {
    "id": "3a8d1e47-9c52-4b0f-a6d3-5e7b2c9f1a04",
    "email": "harper@hearthandkey.example",
    "name": "Harper Quinn",
    "emailVerified": true,
    "org": {
      "id": "b7c2e9a1-4d63-4f85-9e0a-2a1c8d3b5f76",
      "name": "Hearth & Key Realty",
      "role": "admin"
    },
    "key": {
      "id": "2f9b6d41-8e03-4c75-b1a8-4c6e0d2f7a59",
      "name": "crm-search",
      "kind": "personal",
      "fullAccess": false,
      "scopes": [
        "search:read",
        "search:run",
        "profile:read"
      ],
      "expiresAt": "2027-01-01T00:00:00.000Z"
    }
  }
}
An organization key
{
  "data": {
    "id": "3a8d1e47-9c52-4b0f-a6d3-5e7b2c9f1a04",
    "email": "harper@hearthandkey.example",
    "name": "Harper Quinn",
    "emailVerified": true,
    "org": {
      "id": "b7c2e9a1-4d63-4f85-9e0a-2a1c8d3b5f76",
      "name": "Hearth & Key Realty",
      "role": "admin"
    },
    "key": {
      "id": "f3a9c1e5-7b24-4d86-9a0e-5c1d8b3f6a72",
      "name": "brokerage-sync",
      "kind": "org",
      "fullAccess": false,
      "scopes": [
        "search:read",
        "search:run",
        "clients:write",
        "briefs:write",
        "shares:write",
        "profile:read",
        "org:read"
      ],
      "expiresAt": "2027-01-01T00:00:00.000Z"
    }
  }
}
Fields (16)
FieldTypeDescription
dataobject
data.idstring (uuid)The person the call acts as: the person signed in, a personal key's maker, or the admin who made an organization key.
data.emailstring
data.namestring | null
data.emailVerifiedboolean
data.orgobjectThe organization that person belongs to. For an organization key, the organization the key belongs to.
data.org.idstring (uuid)
data.org.namestring | null
data.org.rolestringThat person's role in the organization.
data.keyobject | nullThe key this request came with, or null when it came with a signed-in session.
data.key.idstring (uuid)
data.key.namestring
data.key.kind"personal" | "org"Whose key it is. personal acts as the person who made it. org belongs to the organization and acts as the admin who made it, so the clients, briefs and matches it makes are saved to that admin's workspace.
data.key.fullAccessbooleanTrue when the key carries every scope its kind may, including ones added later.
data.key.scopes("search:read" | "search:run" | "clients:read" | "clients:write" | "briefs:read" | "briefs:write" | "shares:read" | "shares:write" | "profile:read" | "org:read" | "audit:read" | "members:write" | "org:write" | "account:associate")[]What the key may do right now, with each scope's implied scopes included.
data.key.expiresAtstring (date-time)

Errors

Any call of this kind can also answer401 unauthenticated401 invalid-api-key403 insufficient-scope429 rate-limited429 monthly-cap-reached500 internal