Endpoint registry
Understand the Apikee endpoint registry, including route discovery, scope mapping, documentation, and usage analytics.
An endpoint is a record of one route in one environment — GET /v1/users. It is
what your generated docs, the developer portal and the
per-route usage breakdown are built from.
Endpoints are descriptive, not enforcing. Registering a route does not restrict anything; scopes do that in your code.
Auto-registration
In server mode the SDKs register routes as they see traffic. Each process registers a given route once and caches it, so this costs one request per route per boot, off the response path.
// Enabled by default; turn it off if you prefer to declare routes explicitly.
new Apikee({ autoRegisterEndpoints: false })Auto-registration learns only the method and the path. That gets you a complete route list with no work, but it cannot know what a route does or which scopes it needs.
Describing a route
Supplying the rest is what makes your docs and the AI assistant accurate rather than merely complete. Call it once at startup, next to your route definitions.
apikee.describeEndpoint('GET', '/v1/users', {
description: "List users in the caller's tenant.",
scopes: ['read:users'],
tags: ['users'],
})| Field | Purpose |
|---|---|
name | Display name. Defaults to METHOD /path. |
description | One or two sentences. Shown in docs and the portal. |
scopes | Scopes a caller needs. Documentation, not enforcement. |
tags | Grouping in generated docs. |
deprecated | Marks the route as deprecated. |
request / response | JSON Schema fragment or example object. |
Every field is optional, and none of this is sent to any third party — it goes to your own instance.
Addressing
Endpoints are addressed as METHOD:::/path, URL-encoded in a path segment:
GET:::/v1/users
GET:::/v1/users/{id}curl "https://apikee.example.com/api/v1/endpoint/GET%3A%3A%3A%2Fv1%2Fusers?project_env=payments-api-production" \
-H "x-api-key: apikee_..."A route is unique per (environment, path, method). Registering the same one twice
is a no-op rather than an error.
Path parameters
Use the template form, not a concrete value, so all calls to a route aggregate into one record:
/v1/users/{id} ✓
/v1/users/42 ✗ — creates a record per userManaging them by hand
Everything above is also available over REST and in the dashboard, where you can bulk-import from an OpenAPI document or paste routes in.

