Arvica Cloud API Reference
Connect your server-side workflow to Arvica. Inspect your company resources and submit supported compute requests with a scoped API key.
Authentication
A verified customer administrator creates a key in the platform. Use the least-privilege scopes gpu:read, gpu:write, serverless:read, serverless:write, usage:read and billing:read. Keys are company-scoped, expire within 90 days and can be revoked at any time.
export ARVICA_API_BASE="https://cloud.arvica.ai"
export ARVICA_API_KEY="arv_live_…"
curl "$ARVICA_API_BASE/v1/gpus" \
-H "Authorization: Bearer $ARVICA_API_KEY"Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /v1/gpus | List live GPU products and rates |
POST | /v1/quotes | Quote a live GPU configuration (gpu:write; no compute, no charge) |
POST | /v1/deployments | Deploy a quoted live GPU instance, or submit a non-live capacity request for review |
GET | /v1/deployments/{id} | Poll a deployment's state |
GET | /v1/deployments | List your company's deployment records |
POST | /v1/deployments/{id}/start | Start a managed deployment |
POST | /v1/deployments/{id}/stop | Stop a managed deployment |
DELETE | /v1/deployments/{id} | Terminate a managed deployment |
GET | /v1/usage | List recorded customer usage |
GET | /v1/billing/summary | Read the wallet and billing summary |
GET | /v1/serverless/endpoints | List Serverless endpoints |
POST | /v1/serverless/endpoints | Create a Serverless endpoint |
GET | /v1/ssh-keys | List SSH public keys |
POST | /v1/ssh-keys | Add an SSH public key |
GET | /v1/volumes | List recorded volumes |
GET | /v1/balance | Read contract balance from the ledger |
GET | /v1/team | Read active company team members |
All API endpoints require Authorization: Bearer. The per-key limit is 100 requests per 15 minutes. Invalid input returns 400; invalid authentication 401; insufficient permission 403; missing resources 404; unavailable operations 409; and rate limiting 429.
Deploy a GPU instance
- List live GPUs with GET /v1/gpus and choose a product id.
- Request a quote with POST /v1/quotes (gpu:write). A quote does not provision compute, reserve capacity or charge anything. It is bound to your company, expires at expiresAt and can be used for one deployment.
- Deploy with POST /v1/deployments: the quoteToken, the same configuration, consent: true and an Idempotency-Key header. consent: true authorises the billable provisioning path.
- Arvica re-checks the quote, exact-count stock, the locked price, your SSH key (sshKeyId, or your default saved key) and prepaid credit.
- An eligible deployment is recorded as PENDING_PROVIDER and provisioned automatically, without manual review. Poll GET /v1/deployments/{id}.
curl --request POST "$ARVICA_API_BASE/v1/quotes" \
--header "Authorization: Bearer $ARVICA_API_KEY" \
--header "Content-Type: application/json" \
--data '{ "productId": "h100-sxm-80gb", "gpuCount": 1, "storageGB": 100, "region": "Best Available", "mode": "ON_DEMAND", "term": "On demand" }'
curl --request POST "$ARVICA_API_BASE/v1/deployments" \
--header "Authorization: Bearer $ARVICA_API_KEY" \
--header "Idempotency-Key: GENERATE-AND-REUSE-A-UUID" \
--header "Content-Type: application/json" \
--data '{
"quoteToken": "QUOTE-TOKEN-FROM-POST-V1-QUOTES",
"name": "Production inference",
"productId": "h100-sxm-80gb",
"gpuCount": 1,
"storageGB": 100,
"region": "Best Available",
"mode": "ON_DEMAND",
"term": "On demand",
"maxRuntimeHours": 0.5,
"maxSpendAUD": 3,
"consent": true
}'Safety limits are enforced by Arvica, not by your client: maxRuntimeHours terminates the instance once it has run that long. maxSpendAUD is an AUD limit converted once at admission into your wallet's settlement currency: exactly for an AUD wallet (3 becomes 300 cents), or for a USD wallet at the reference exchange rate recorded in your quote, rounded down so it never exceeds the AUD amount. The instance is terminated once its recorded usage reaches it. Without a quoted rate for a non-AUD wallet the request is refused (SPEND_CAP_CONVERSION_UNAVAILABLE). The response shows the enforced limit in deployment.spendCap. Both limits are checked about once a minute while the instance runs. DELETE /v1/deployments/{id} terminates a deployment.
| State | When | What happens |
|---|---|---|
PENDING_PROVIDER | Eligible quote-backed request | Provisioned automatically; billed as metered once the instance exists. |
PENDING_PAYMENT | Prepaid credit does not cover the first hour | No instance, no charge. |
PENDING_REVIEW | Non-live capacity request without a quote | No instance, no charge. |
| rejected | Missing, expired, changed or another company's quote; missing SSH key; invalid limits; unavailable stock; multi-node or reserved | 400/404/409 with a code such as QUOTE_REQUIRED, QUOTE_EXPIRED, QUOTE_MISMATCH, QUOTE_ALREADY_USED, IDEMPOTENCY_CONFLICT, SSH_KEY_REQUIRED or TOPOLOGY_UNSUPPORTED; nothing is ordered or charged. Retrying the same request with the same Idempotency-Key safely returns the original deployment. |
Operational boundaries
The API exposes only resources belonging to the API key's company. It does not expose provider administration, provider cost, margins, other customers, or unconfirmed inventory. Do not send private keys, passwords or raw datasets in requests.