Endpoint reference
This page summarizes the current API groups under /api/v1.
Conventions
- Base path:
/api/v1 - JSON request/response payloads
- Standard HTTP semantics (
2xx,4xx,5xx) - Auth required for protected routes
Core endpoint groups
| Group | Purpose |
| --- | --- |
| /auth/* | login, refresh, logout, password reset, OAuth, invite acceptance |
| /client/* | managed-client onboarding flow for CLI (devices, config, heartbeat) |
| /users/* | user lifecycle, group membership, access views |
| /groups/* | group lifecycle |
| /networks/* | network lifecycle, routing policy CRUD, DNS record CRUD |
| /routing-policies/* | routing policy detail update/delete |
| /nodes/* | node lifecycle and WireGuard config output |
| /devices/* | device lifecycle and routing preferences |
| /dns/* | DNS records API (/dns/records, /dns/records/:id) |
| /regions/* | region inventory |
| /gateways/* | gateway runtime inventory |
| /agents/* | gateway-manager and gateway-daemon agent inventory |
| /tunnels/* | tunnel list and runtime counters |
| /notifications/* | notification settings |
| /admin/settings | platform-level settings |
Managed Client canonical routes
- Login:
POST /api/v1/auth/login - Enroll:
POST /api/v1/client/devices - Refresh config:
POST /api/v1/client/devices/:id/config - Heartbeat:
POST /api/v1/client/devices/:id/heartbeat
Managed-client validation responses use:
422withVALIDATION_ERROR+fields[]for schema/binding validation400with{ "error": { "code": "validation_error", "message": "<reason>" } }for domain validation401/403/404using the sameerrorenvelope
Routing Policies MVP routes
GET /api/v1/networks/:id/routing-policiesPOST /api/v1/networks/:id/routing-policiesGET /api/v1/routing-policies/:idPUT /api/v1/routing-policies/:idDELETE /api/v1/routing-policies/:id
ViaGateway policies validate:
- ordered
gatewayPath, - gateways must exist and have Gateway role in the target network,
- max hops via
ROUTING_POLICY_MAX_HOPS(default3).
Generated WireGuard configs now include routingIntent[] as desired-state export.
DNS MVP runtime routes
GET /api/v1/networks/:id/dns/recordsPOST /api/v1/networks/:id/dns/recordsPUT /api/v1/dns/records/:idDELETE /api/v1/dns/records/:idGET /api/v1/networks/:id/dns/corefile(deterministic CoreDNS artifact)GET /api/v1/networks/:id/runtime-status(routing + DNS desired/applied status)
Example: create network
curl -X POST http://localhost:8080/api/v1/networks \
-H 'Authorization: Bearer <access-token>' \
-H 'Content-Type: application/json' \
-d '{"groupId":"<group-id>","name":"prod-eu","cidr":"10.42.0.0/16"}'
Example: create routing policy
curl -X POST http://localhost:8080/api/v1/networks/<network-id>/routing-policies \
-H 'Authorization: Bearer <access-token>' \
-H 'Content-Type: application/json' \
-d '{"name":"corp-egress","type":"via_gateway","destinationCidr":"10.0.0.0/24","gatewayPath":["<gateway-node-id>"]}'
Example: create DNS record
curl -X POST http://localhost:8080/api/v1/networks/<network-id>/dns/records \
-H 'Authorization: Bearer <access-token>' \
-H 'Content-Type: application/json' \
-d '{"name":"api","type":"A","value":"100.64.0.10","ttl":60}'
Current docs scope and roadmap
- This page is intentionally high-level.
- Generated OpenAPI docs and SDK-focused references are planned as documentation maturity work.