Organizations
An organization is the top-level account that owns your fleets, robots, missions, and data in Rover Nexus.
What it represents
Every account belongs to an organization. The organization is the boundary for ownership and access: fleets, robots, missions, and telemetry all live under an organization, and members are invited into it with roles that govern what they can do. Organizations can also share fleets with one another in a controlled way.
In the REST API, the organization id appears in the path of every fleet-scoped
endpoint (/v1/orgs/{org_id}/fleets/{fleet_id}/...) and is the scope of every
API key.
Authentication
The endpoints on this page manage API keys, so they must be called by a signed-in user (an organization owner or admin), not by an API key. In practice you create and revoke keys from the Fleet Manager web app, which calls these endpoints for you. See Authentication for the recommended workflow.
All other endpoints in this reference are called with an API key.
API key management
List API keys
GET /v1/orgs/{org_id}/api-keys
Returns metadata for every key in the organization. The raw key and its hash are never returned, only metadata.
Response:
{
"items": [
{
"id": "8f3b…",
"name": "Planning assistant",
"org_id": "3a1c…",
"fleet_id": null,
"permissions": ["robots:read", "operations:draft", "operations:validate"],
"created_at": "2026-06-01T12:00:00Z",
"last_used_at": "2026-06-17T09:14:22Z",
"expires_at": null,
"revoked_at": null
}
]
}
A key with fleet_id: null is organization-scoped. A non-null revoked_at or a
past expires_at means the key no longer authenticates.
Create an API key
POST /v1/orgs/{org_id}/api-keys
Requires the Idempotency-Key header (see
Idempotency).
Request body:
{
"name": "Planning assistant",
"fleet_id": "optional-fleet-uuid",
"permissions": [
"robots:read",
"features:read",
"operations:draft",
"operations:validate"
],
"expires_at": "2026-12-31T23:59:59Z"
}
name(required): a human label for the key.fleet_id(optional): bind the key to a single fleet. Omit for an organization-scoped key. A fleet-scoped key's fleet must belong to this organization.permissions(required): the permissions the key carries. Every entry must be a known permission string (see Scopes and permissions); an unknown string is rejected.expires_at(optional): an RFC 3339 timestamp in the future. Omit for a key that never expires.
Response (201 Created):
{
"id": "8f3b…",
"name": "Planning assistant",
"org_id": "3a1c…",
"fleet_id": null,
"permissions": ["robots:read", "features:read", "operations:draft", "operations:validate"],
"key": "rn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"created_at": "2026-06-18T17:05:00Z",
"expires_at": "2026-12-31T23:59:59Z"
}
The key field is the raw key and is returned only this once. Store it
immediately; it cannot be retrieved again.
Revoke an API key
DELETE /v1/orgs/{org_id}/api-keys/{api_key_id}
Revokes a key. Revocation takes effect immediately and is permanent. Keys are
never hard-deleted: a revoked key remains in the list (with revoked_at set) for
audit purposes.
Response:
{ "success": true, "revoked": true }
A key that does not exist or is already revoked returns 404.