Endpoints

All routes are under /v1. Every route except health requires a bearer token.

Method & pathAuthPurpose
GET /v1/healthpublicLiveness check.
POST /v1/resolvebearerNative package names → canonical slugs for a release.
POST /v1/translatebearerCanonicals → target packages (+ confidence, caveats, conditionals).
POST /v1/config-pathsbearerCanonicals → config-path relocations for a release pair.
POST /v1/usagebearerRecord a depersonalized VM usage event (preflight / readiness / migration).
POST /v1/migrationbearerUpsert a VM migration record under an engagement.
GET /v1/accountbearerThe account's billing/usage summary.

Metering & usage

resolve, translate, and config-paths each record a metered request against the account. POST /v1/usage records a per-VM event whose kind is one of:

  • preflight — a feasibility check; never billable;
  • readiness — a fleet feasibility check; never billable;
  • migration — a real migration; billable-eligible depending on plan and target.

Errors

Errors return a JSON {"error": "..."} with a standard status code:

StatusMeaning
400Malformed request (empty batch, over the 1000-item limit, bad kind/migration_type).
401Missing, invalid, or disabled token.
402Migration quota reached — see Accounts, quota & billing.
404Unknown engagement on /v1/migration.