Mint a one-time agent init token
const url = 'https://api.flotera.com/api/v1/tokens/init';const options = { method: 'POST', headers: { cookie: '__Host-erm_session=<__Host-erm_session>', 'Content-Type': 'application/json' }, body: '{"expected_fingerprint":"example","server_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","purpose":"example","expires_in_s":3600}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.flotera.com/api/v1/tokens/init \ --header 'Content-Type: application/json' \ --cookie __Host-erm_session=<__Host-erm_session> \ --data '{ "expected_fingerprint": "example", "server_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "purpose": "example", "expires_in_s": 3600 }'One-time token for agent registration (TTL at most 1 hour). Claimed exactly once by POST /agent/register. The plaintext must not be passed via installer arguments or process list. This is the agent enrollment credential of D-07, not a customer PAT. Adding a server is a fleet mutation: denied while frozen, and refused with 409 server_limit_reached once the plan’s fleet.servers.max is reached — free allows exactly one managed server.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Idempotency key, 1–128 ASCII, unique per (tenant_id, operation, key) for at least 24 hours. Retrying with the same body replays the stored response; a different body returns 409 idempotency_conflict.
Request Body
Section titled “Request Body”object
Optional expected hardware fingerprint hash (matching hint, not a credential).
Bind the token to an existing server. When set, registration attaches to exactly that server and the hardware fingerprint is not consulted; when absent, a new server is created (or matched by fingerprint). Reinstall commands issued from a server’s page set this so that a changed fingerprint — a reinstalled OS, a replaced card, a renamed host — cannot silently create a duplicate record. On success every other unused install token bound to that server is revoked: one agent per server.
Responses
Section titled “Responses”Init token minted; plaintext shown once.
object
UUID (v7 for new entities; v4 accepted during migration).
One-time init token plaintext — shown exactly once; claimed once by agent register.
RFC 3339 UTC with microsecond precision.
Example
{ "expires_at": "2026-07-25T10:15:30.123456Z"}Missing/invalid credentials (code=unauthorized).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}Authenticated but not permitted. code=forbidden — role/scope mismatch; code=feature_not_entitled — the plan does not include the capability; code=account_frozen — the account is frozen and this operation is declared x-ermeon-frozen: deny. The three are deliberately distinct: only the last one is fixed by a top-up (13 §5.6).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}The plan’s managed-server limit is reached (code=server_limit_reached) or the tenant has no plan assignment (code=plan_required).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}Request failed validation (code=validation_failed), with per-field errors.
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}Rate limit exceeded (code=rate_limited).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}Headers
Section titled “Headers”Seconds to wait before retrying.