---
title: "Who this key is, and the rules for reading the numbers"
method: GET
path: "/me"
---

# Who this key is, and the rules for reading the numbers

`GET /me`

## Request

- Base URL: `https://app.aimentiontracker.ai/api/v1`
- URL: `https://app.aimentiontracker.ai/api/v1/me`
- Auth: API key in header `X-API-Key`

Call this first. The reporting_rules block is not advisory: it carries the sample floor and the live alert thresholds, which is the only way a client can tell 'no alerts' from 'nothing changed'.

## Response `200`

OK

- object
  - `data` Me, required
    - `organization` object, required
      - `name` string, nullable: Organisation name.
    - `plan` object, required
      - `name` string: trial | solo | starter | growth | agency.
      - `status` string: Stripe subscription status.
      - `trial_ends_at` string, nullable: ISO timestamp, null when not trialling.
      - `prompts` object
        - `used` integer: Active prompts across the organisation.
        - `included` integer: The plan's cap.
      - `brands` integer: Brands in the organisation.
    - `key` object, required
      - `scopes` string[]: Granted to this key.
      - `available_scopes` string[]: Every scope that exists, so 'not granted' is distinguishable from 'not real'.
      - `pinned_to_brand` boolean: True when the key is bound to one brand. Such a key refuses any other ?brand=, and GET /brands returns only that one brand.
    - `brand` BrandRef, required: Which brand a response describes. Present in meta on every data endpoint.
      - `id` string, required: Pass as ?brand=.
      - `name` string, required: Display name.
    - `rate_limit` object, required
      - `per_minute` integer: Requests a minute. 300 on every plan.
      - `remaining` integer: Left in the current minute.
      - `resets_in_seconds` integer: Until the window rolls.
    - `reporting_rules` object, required: NOT ADVISORY. A client that ignores these produces wrong reports.
      - `min_sample` integer: Below this many answers, rate is null.
      - `rate_null_means` string: Plain-language restatement, for surfacing to an end user.
      - `engines_averaged` boolean: Always false. Engines disagree; a mean describes no real surface.
      - `alerts` object
        - `enabled` boolean
        - `kinds` union: Array of requested kinds, or the string 'all' when none are set. Kinds: visibility_drop, visibility_rise, competitor_overtook, cited_not_named, negative_framing, engine_blackout.
          - string[]
          - string
        - `min_delta_points` integer: Percentage points of change required to raise a finding.
        - `min_sample_each_side` integer: Answers required on BOTH sides of the comparison.
        - `also_suppressed_below_statistical_noise` boolean: Always true. Even a move clearing min_delta_points is suppressed if it sits inside a 95% CI on the difference of two proportions. Whichever bar is HIGHER wins.
        - `empty_list_means` string: The honest phrasing for an empty /alerts response.
  - `meta` object, required
    - `generated_at` string, date-time
    - `brand` BrandRef: Which brand a response describes. Present in meta on every data endpoint.
      - `id` string, required: Pass as ?brand=.
      - `name` string, required: Display name.
    - `note` string

## Other responses

- `400`: brand_required, or a cursor that does not belong to this brand.
- `401`: Missing, malformed, revoked or expired key.
- `402`: The organisation has never subscribed, or the plan excludes the API.
- `403`: The key lacks the required scope.
- `404`: No such brand, or the brand has not finished setup.
- `429`: Rate limit exceeded. Carries Retry-After.

---

[API](https://skmtc.dev/aimentiontracker/apis/aimentiontracker-api.md) · [All operations](https://skmtc.dev/aimentiontracker/apis/aimentiontracker-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aimentiontracker/apis/aimentiontracker-api/revisions/c3329178c84c?raw)
