Intry

API overview

Admin API vs Core routes, auth, environments, and response shapes.

Overview

Intry's HTTP surface splits into:

  1. /api/admin/* — CRM-style operations (tenants, properties, units, users, calls, devices, analytics). Used by the admin dashboard, Unkey API keys, and intry-mcp.
  2. /api/v1/* — Resident-facing JSON API (auth, profile, access). Used by portal and mobile.
  3. Voice gateway/twilio/* and /telnyx/* for carrier webhooks.
  4. Legacy mobile/access/*, /devices/*, /registration/* for older app builds.

OpenAPI spec

Import the bundled spec from the monorepo:

docs/openapi/admin.yaml

Use it with Postman, Insomnia, or OpenAPI code generators. When the spec and code disagree, trust the running service and file a docs bug.

Multi-environment admin proxy

When calling admin routes through intry-admin, send:

X-Admin-Env: PROD

Accepted values: DEV, TEST, STAGING, PROD. The proxy selects the matching Railway Core base URL.

Authentication

ClientMethod
Human (dashboard)WorkOS SSO or Clerk session via admin UI
Automation / agentsUnkey API key in Authorization
ResidentsJWT Bearer (after login or Clerk exchange)

See Authentication.

Response shapes

Admin endpoints use two patterns — check the route before integrating:

Legacy list (still common):

{
  "properties": [],
  "total": 42,
  "limit": 20,
  "offset": 0
}

Envelope (newer routes):

{
  "data": { "property": { "id": "…" } },
  "meta": { "total": 1 }
}

Errors:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "…"
  }
}

Quick start (admin automation)

Create or obtain an Unkey key with the scopes your integration needs (see docs/AGENT_UNKEY_KEYS.md).

Choose target environment and set X-Admin-Env on every request if you route through the admin proxy.

GET /api/admin/stats HTTP/1.1
Host: <your-proxy-host>
Authorization: Bearer <unkey_api_key>
X-Admin-Env: STAGING

Last verified: 2026-06-21 (commit 293c4a7)

On this page