Projects

Select a project to manage its servers, images and flavors

Servers

Provision and manage OVH GPU instances

New Server
Running Servers LIVE

Configuration

Manage allowed images, flavors and installation templates

Add / Update Image
Allowed Images

Discovery

Browse available images and flavors directly from OVH

Available OVH Images
Loading…

API Reference

Programmatic access — create API keys in the Admin panel

Base URL
All requests must include Authorization: Bearer <api-key>. API keys are prefixed with gpualloc_. Each key is scoped to a single project, so the base URL above already includes that project path — the endpoint paths below are relative to it. In the examples, set BASE to the base URL above and API_KEY to your key.
GET /servers
List running servers

Returns all running GPU servers. Includes IP addresses, status, flavor, and expiry time if uptime limits are configured.

Example

                
Response 200 OK
{
  "servers": [
    {
      "id": "3f9a1c7e-0b2d-4e6f-8a1b-2c3d4e5f6a7b",
      "name": "my-project-0001",
      "status": "ACTIVE",
      "flavor": "t1-45",
      "ip": ["51.91.120.42"],
      "region": "GRA11",
      "created": "2026-06-07T09:14:03Z",
      "expires_at": "2026-06-08T09:14:03Z",
      "image_name": "ubuntu-22.04-cuda",
      "provision_state": "succeeded",
      "provision_error": null,
      "provision_attempts": 1
    }
  ]
}

provision_state moves through creating → queued → running → succeeded, or ends at create_failed / failed. ip is empty until the instance gets an address; expires_at is null unless an uptime limit is set.

GET /servers/{id}
Get one server

Returns a single server by its ID — the same object shape as an entry in GET /servers. Returns 404 if the ID is not in this project.

Example

                
Response 200 OK
{
  "id": "abc123-def456",
  "name": "my-project-0001",
  "status": "ACTIVE",
  "flavor": "t1-45",
  "ip": ["51.91.120.42"],
  "region": "GRA11",
  "created": "2026-06-07T09:14:03Z",
  "expires_at": "2026-06-08T09:14:03Z",
  "image_name": "ubuntu-22.04-cuda",
  "provision_state": "succeeded",
  "provision_error": null,
  "provision_attempts": 1
}
POST /servers
Create servers

Provision one or more GPU instances. Returns immediately with a list of server objects containing each server's id and provision_state: "creating". IP address and final status become available by polling GET /servers.

Field Type Description
flavor required string Flavor name (GPU type + resources). Get available values from GET /config/flavors.
image required string OS image name. Get available values from GET /config/images.
count required integer Number of instances to create (min: 1).
template optional string Installation template to run after boot. Get available values from GET /templates.
Example

                
Response 200 OK
{
  "servers": [
    { "id": "3f9a1c7e-0b2d-4e6f-8a1b-2c3d4e5f6a7b", "provision_state": "creating" }
  ]
}

Returns one object per instance immediately. Poll GET /servers for the IP address and final status.

POST /servers/{id}/extend
Extend uptime

Adds extra hours to a server's uptime limit, pushing back its expires_at. Hours accumulate across repeated calls. Only meaningful when an uptime limit is configured.

Field Type Description
hours required number Additional hours to add to this server's uptime limit (must be > 0).
Example

                
Response 200 OK
{ "server_id": "abc123-def456", "extra_hours": 2.0 }

extra_hours is the running total added to this server so far.

POST /servers/{id}/install
Run a template

Runs an installation template on an already-running server. The template must be enabled for the project (see GET /templates). The call first confirms SSH access (may take a few seconds), then runs the install in the background — poll GET /servers/{id}/logs for progress.

Field Type Description
template required string Template folder to install. Get available values from GET /templates.
Example

                
Response 200 OK
{
  "status": "installation_started",
  "server_id": "abc123-def456",
  "template": "vllm"
}

Returns 409 if the server is still being created, or 400 if the template is not enabled or SSH authentication to the server fails.

GET /servers/{id}/logs
Server provisioning logs

Returns the provisioning and installation log lines for a server, oldest first. Useful for tracking POST /servers and POST /servers/{id}/install progress.

Example

                
Response 200 OK
{
  "logs": [
    {
      "id": 1,
      "occurred_at": "2026-06-07T09:14:05Z",
      "level": "info",
      "message": "Provisioned by alice"
    },
    {
      "id": 2,
      "occurred_at": "2026-06-07T09:16:22Z",
      "level": "info",
      "message": "[template:vllm] Installation finished"
    }
  ]
}
DELETE /servers/{id}
Delete a server

Permanently deletes a GPU instance by its server ID (the id returned from POST /servers or GET /servers).

Example

                
Response 200 OK
{ "deleted": "abc123-def456" }

If the server is still being created, deletion is deferred and the response is { "deleted": "<id>", "status": "deleting" }. Unknown IDs return 404.

GET /config/images
List allowed images

Returns the list of images available for server creation. Use the name field in POST /servers.

Example

                
Response 200 OK
{
  "images": [
    {
      "name": "ubuntu-22.04-cuda",
      "ovh_id": "8f1e2d3c-4b5a-6789-0abc-def123456789",
      "pretty_name": "Ubuntu 22.04 + CUDA"
    }
  ]
}

Pass the name value as the image field in POST /servers.

GET /config/flavors
List allowed flavors

Returns the list of GPU flavors available for server creation including vCPUs, RAM, GPU type, and hourly price. Use the name field in POST /servers.

Example

                
Response 200 OK
{
  "flavors": [
    {
      "name": "t1-45",
      "vcpus": 8,
      "ram_gb": 45,
      "disk_gb": 400,
      "gpu_type": "Tesla V100",
      "gpu_count": 1,
      "gpu_vram_gb": 16,
      "price_hour": 1.97
    }
  ]
}

Pass the name value as the flavor field in POST /servers. price_hour is in EUR and may be null if unknown.

GET /templates
List available templates

Returns the installation templates enabled for this project. Use the folder value as the template field in POST /servers.

Example

                
Response 200 OK
{
  "templates": [
    { "folder": "vllm", "name": "vLLM", "description": "vLLM inference server" }
  ],
  "configured": true
}

Pass the folder value as the template field in POST /servers. configured is false when templates are not enabled on this deployment.

GET /billing
Get billing summary

Returns current month spend and end-of-month forecast from OVH, broken down by instance.

Example

                
Response 200 OK
{
  "ovh_billing": {
    "period": { "from": "2026-06-01T00:00:00Z", "to": "2026-06-07T00:00:00Z" },
    "last_update": "2026-06-07T08:00:00Z",
    "current_total": 142.87,
    "forecast_total": 612.40,
    "instances": [],
    "resources_usage": []
  },
  "internal_billing": {
    "month_start": "2026-06-01T00:00:00+00:00",
    "total_spend": 138.52,
    "per_actor": [
      { "actor": "alice", "spend": 92.10 },
      { "actor": "ci-key", "spend": 46.42 }
    ]
  }
}

ovh_billing covers the whole OVH project; internal_billing is this project's tracked spend for the current month, per actor. If OVH is unreachable, ovh_billing is { "error": "Failed to fetch OVH billing" }.

Billing

Current month spend and end-of-month forecast

  Loading…

Admin

System configuration and limits

Server Limits
Max Servers
Maximum number of concurrent GPU instances that can be running at once
Max Uptime (hours)
Automatically delete servers after this many hours. Set to 0 to disable.
API Tokens
Tokens are scoped to this project — they can only access endpoints under . To create a global admin token use the system admin panel.
Create Token
Generate a key for programmatic access. The key is shown once — save it immediately.
SSH Deploy Key
An Ed25519 key pair is automatically generated for this project. The public key is injected into every new server via cloud-init, allowing passwordless SSH access. Keep the private key secret.
  Loading…

Audit Logs

All actions performed in this project

  Loading…