Docs

API reference / Account

Introspect the API key

GET/v1/me

API key required

Returns the project, environment, plan and rate limit tied to the key in use. Handy to check a key when your integration starts.

Authentication#

Send a secret API key as Authorization: Bearer <key>. Both tp_test_… and tp_live_… keys work; the key decides which environment you read and write. See Authentication.

Responses#

200Context of the key.

Headers

  • X-Request-Id Request identifier.
  • X-RateLimit-Limit Quota of the current window.
  • X-RateLimit-Remaining Requests remaining in the window.
  • X-RateLimit-Reset Seconds before the quota renews.

Body

  • objectstringrequired

    always "me"

    Example "me"

  • environmentstringrequired

    Environment of the key.

    One ofsandboxlive

    Example "sandbox"

  • livemodebooleanrequired

    true for a live key, false for a sandbox key.

    Example false

  • api_versionstringrequired

    API version that answered.

    Example "2026-10-08"

  • projectobjectrequired

    Project of the key.

    • idstringrequired

      Identifier.

      Example "b6f1c0e2-7a52-4d2c-9f8e-2f2f0a6d1c11"

    • namestringrequired

      Name.

      Example "My app"

  • organizationobjectrequired

    Owning organization.

    • idstringrequired

      Identifier.

      Example "1d9a6a52-2b0e-4a8e-8d0d-4d3b7a3f8c20"

    • namestringrequired

      Name.

      Example "Acme SAS"

    • planstringrequired

      Pricing plan.

      One oflaunchgrowthenterprise

      Example "launch"

    • live_enabledbooleanrequired

      Live access is enabled.

      Example false

  • api_keyobjectrequired

    The key itself (never its secret).

    • idstringrequired

      Identifier.

      Example "e4d1b7e0-3c0a-4f6b-8a19-5b0c2d7f9a33"

    • labelstringrequired

      Label given in the Hub.

      Example "backend"

    • prefixstringrequired

      Displayable prefix.

      Example "tp_test_a1b2"

    • last4stringrequired

      Last four characters.

      Example "x9Yz"

    • created_atstringrequired

      Creation date.

      format: date-time

      Example "2026-10-08T09:30:00.000Z"

    • last_used_atstring | nullrequired

      Last use (updated at most once per minute).

      format: date-time

      Example "2026-10-08T09:30:00.000Z"

  • rate_limitobjectrequired

    Rate limit of this key.

    • limitintegerrequired

      Requests per window.

      Example 100

    • window_secondsintegerrequired

      Window length in seconds.

      Example 60

Example 200 response
{
  "object": "me",
  "environment": "sandbox",
  "livemode": false,
  "api_version": "2026-10-08",
  "project": {
    "id": "b6f1c0e2-7a52-4d2c-9f8e-2f2f0a6d1c11",
    "name": "My app"
  },
  "organization": {
    "id": "1d9a6a52-2b0e-4a8e-8d0d-4d3b7a3f8c20",
    "name": "Acme SAS",
    "plan": "launch",
    "live_enabled": false
  },
  "api_key": {
    "id": "e4d1b7e0-3c0a-4f6b-8a19-5b0c2d7f9a33",
    "label": "backend",
    "prefix": "tp_test_a1b2",
    "last4": "x9Yz",
    "created_at": "2026-10-08T09:30:00.000Z",
    "last_used_at": "2026-10-08T09:30:00.000Z"
  },
  "rate_limit": {
    "limit": 100,
    "window_seconds": 60
  }
}
401Missing, invalid or revoked API key.

Example: missing_api_key

Example 401 response
{
  "error": {
    "type": "authentication_error",
    "code": "missing_api_key",
    "message": "Provide your API key as \"Authorization: Bearer <key>\"",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}

Example: invalid_api_key

Example 401 response
{
  "error": {
    "type": "authentication_error",
    "code": "invalid_api_key",
    "message": "The API key is invalid",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}

Example: api_key_revoked

Example 401 response
{
  "error": {
    "type": "authentication_error",
    "code": "api_key_revoked",
    "message": "This API key has been revoked",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}
403Organization suspended, live access not enabled, or sandbox-only route.

Example: organization_suspended

Example 403 response
{
  "error": {
    "type": "permission_error",
    "code": "organization_suspended",
    "message": "Your organization is suspended. Contact Tilt Pay support.",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}

Example: live_not_enabled

Example 403 response
{
  "error": {
    "type": "permission_error",
    "code": "live_not_enabled",
    "message": "Live access has not been enabled for your organization yet",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}

Example: sandbox_only

Example 403 response
{
  "error": {
    "type": "permission_error",
    "code": "sandbox_only",
    "message": "This route is only available with a sandbox API key",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}
429Rate limit exceeded. Retry after the Retry-After delay (seconds).

Example: rate_limit_exceeded

Example 429 response
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Too many requests. Slow down and retry after the delay in Retry-After.",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}
500Internal error. Retry; give request_id to support if it persists.

Example: internal_error

Example 500 response
{
  "error": {
    "type": "api_error",
    "code": "internal_error",
    "message": "Internal server error",
    "request_id": "0b2c8f6e-41f9-4c0a-8d55-6f6a3c1d9e21"
  }
}

Headers on every response

  • X-Request-Id Identifier of the request, also present in error bodies. Give it to support.
  • X-API-Version Version of the API that answered.
  • X-RateLimit-Limit / -Remaining / -Reset Quota of your key for the current window. See Rate limits.

Errors#

Errors share one format, described in Errors. Branch your code on error.code.

Errors this route can return
StatusCodeMeaning
401missing_api_keyMissing, invalid or revoked API key.
401invalid_api_keyMissing, invalid or revoked API key.
401api_key_revokedMissing, invalid or revoked API key.
403organization_suspendedOrganization suspended, live access not enabled, or sandbox-only route.
403live_not_enabledOrganization suspended, live access not enabled, or sandbox-only route.
403sandbox_onlyOrganization suspended, live access not enabled, or sandbox-only route.
429rate_limit_exceededRate limit exceeded. Retry after the Retry-After delay (seconds).
500internal_errorInternal error. Retry; give request_id to support if it persists.