API Reference
This section documents Kestrel's server-to-server integration surface — for building your own external client against Kestrel directly: an AI radio/STT bot, a scripted tool, or anything else outside a browser.
If you're running the official FiveM resources (kestrel-cad,
kestrel-anpr-bridge, kestrel-ers-bridge), you don't need this section —
see Setting Up Your Community instead, they
already call this API for you. Come here if you're building your own
integration instead of using those resources.
- Base URL:
https://<your-deployment>/api/v1 - Auth: Bearer JWT
- Token lifetime: 12 minutes, no refresh token — re-exchange your credential before it expires
- Format: JSON over REST
Two credential kinds
| Surface | Auth | Reaches |
|---|---|---|
| FiveM Bridge | Bearer JWT, 12-min TTL | Duty status (on/off only), lookups, BOLOs, citations, arrests, panic, 911, location — one linked player at a time |
| API credential | Bearer JWT, 12-min TTL | A slice of the general CAD API not tied to any one player — currently units, CAD calls, BOLOs, and vehicle/person/warrant lookup |
Pick based on what you're building:
- Building something that acts on behalf of an in-game player — an officer running a plate from a custom in-game tool, a radio bot voicing commands for a specific cop — use the FiveM Bridge (see Getting a Token and FiveM Bridge Endpoints).
- Building something that manages dispatch operations directly, with no specific player attached — a standalone dashboard, an automated reporting tool — use the API credential (see API Credential).
Both credential kinds are created from the Kestrel web app under Admin → Integrations by an admin with the appropriate permission — see Setting Up Your Community.
Where to go next
- Getting a Token — the token exchange and how authorization works
- FiveM Bridge Endpoints — every
route under the
fivem-kind credential - API Credential — every route under the
generic_api_key-kind credential, and its scope catalog - Rate Limits & Security — throttling and what to know before you ship
- Errors & Status Codes — the uniform error shape every route shares
- Code Examples — working curl, Lua, JavaScript, and Python snippets for the flows above