Hopp til innhold

API

API-nøkler er knyttet til én organisasjon.

POST /v1/machines
GET /v1/machines
GET /v1/machines/{id}
PUT /v1/machines/{id}
DELETE /v1/machines/{id}
POST /v1/machines/{id}/start
POST /v1/machines/{id}/stop
POST /v1/machines/{id}/suspend
POST /v1/machines/{id}/exec
POST /v1/machines/{id}/fork
GET /v1/machines/{id}/logs
GET /v1/machines/{id}/snapshots
POST /v1/machines/{id}/snapshots
DELETE /v1/machines/{id}/snapshots/{snapshot_id}

Eksempel: web-app

{
"name": "web",
"image": "ghcr.io/example/web:latest",
"scaling": {
"min": 0,
"max": 2
},
"ports": [
{
"port": 8080,
"protocol": "http",
"concurrency": {
"type": "requests",
"target": 20
}
}
],
"auto_stop": {
"action": "suspend"
}
}

Eksempel: agent

{
"name": "agent",
"image": "ghcr.io/example/agent:latest",
"max_cpu": 8,
"max_memory": "16GB",
"secrets": {
"ANTHROPIC_API_KEY": "anthropic-api-key"
},
"auto_stop": {
"action": "suspend"
}
}
FeltTypePåkrevdBeskrivelse
namestringjaNavn på maskinen
imagestringjaOCI-image
scalingobjectneiMinste og største antall kjørende instanser
constraintsobjectneiBegrensninger for hvor maskinen kan kjøre
max_cpunumberneiMaks antall CPU-kjerner
max_memorystringneiMaks minne, for eksempel 512MB eller 16GB
max_storagestringneiMaks innebygd lagring. Standard er 100GB
cpu_typestringneishared eller dedicated
commandstring[]neiKommando som kjøres i stedet for imagets standardkommando
envobjectneiMiljøvariabler
secretsobjectneiKobler hemmeligheter til miljøvariabler
portsobject[]neiNettverksporter
domainsstring[]neiEgendefinerte domener
volumesobject[]neiEkstra volumer
auto_startbooleanneiStart maskinen automatisk ved trafikk. Standard er true
auto_stopobjectneiAutomatisk stopp ved inaktivitet
restartobjectneiRegler for automatisk restart
deployobjectneiRegler for utrulling

Instansene vises i instances.

{
"name": "web",
"scaling": {
"min": 0,
"max": 3
},
"instances": [
{
"id": "web1",
"state": "running"
},
{
"id": "web2",
"state": "running"
},
{
"id": "web3",
"state": "suspended"
}
]
}

Maskiner har 100 GB innebygd lagring som standard. Lagring faktureres etter faktisk bruk.

{
"scaling": {
"min": 0,
"max": 20
}
}
FeltTypePåkrevdBeskrivelse
minnumberjaMinste antall kjørende instanser
maxnumberjaStørste antall kjørende instanser

Lik min og max gir et fast antall. Med min: 0 kan alle instanser stoppe eller gå i dvale.

concurrency.target avgjør når kapasiteten skal økes eller reduseres.

{
"regions": ["eu-west"]
}
FeltTypePåkrevdBeskrivelse
regionsstring[]neiTillatte regioner
locationsstring[]neiTillatte lokasjoner
{
"action": "suspend"
}
FeltTypePåkrevdBeskrivelse
afterstringneiTid uten aktivitet før handlingen utføres, for eksempel 5m
actionstringjastop eller suspend

HTTP-trafikk, aktive forbindelser og kjørende exec regnes som aktivitet.

{
"policy": "on-failure"
}
FeltTypePåkrevdBeskrivelse
policystringneinever, on-failure eller always. Standard er on-failure

Utrulling uten nedetid er standard når maskinkonfigurasjonen oppdateres.

{
"strategy": "rolling"
}
FeltTypePåkrevdBeskrivelse
strategystringneirolling, canary eller bluegreen. Standard er rolling

Nye maskiner må være friske før trafikk flyttes fra den gamle versjonen.

FeltTypePåkrevdBeskrivelse
portnumberjaPort på maskinen
protocolstringjahttp, tcp eller udp
external_portnumberneiOffentlig port når den avviker fra maskinens port
concurrencyobjectneiKapasitet for ruting og automatisk oppstart
health_checkobjectneiHelsesjekk for porten
{
"path": "/health"
}
FeltTypePåkrevdBeskrivelse
pathstringjaHTTP-path som må svare før maskinen regnes som klar

Uten health_check brukes en automatisk sjekk av porten.

{
"type": "requests",
"target": 20
}
FeltTypePåkrevdBeskrivelse
typestringneirequests eller connections
targetnumberjaØnsket samtidig belastning før annen kapasitet foretrekkes eller startes

For HTTP brukes requests som standard. For TCP brukes connections.

target er en kapasitetsverdi for ruting og automatisk oppstart, ikke en hard grense for trafikk.

FeltTypePåkrevdBeskrivelse
idstringjaVolum-ID
pathstringjaMonteringspunkt i maskinen
{
"DATABASE_URL": "database-url",
"STRIPE_API_KEY": "stripe-key"
}

Hemmeligheter kobles til miljøvariabler som MILJØVARIABEL: secret-navn.

Secret-verdier lagres i Vault, ikke i maskinkonfigurasjonen.

{
"command": ["uptime"]
}

Kommandoen kjøres på alle instansene. Velg én eller flere med instances:

{
"command": ["uptime"],
"instances": ["web1", "web2"]
}
FeltTypePåkrevdBeskrivelse
commandstring[]jaKommando som skal kjøres
instancesstring[]neiInstanser som skal kjøre kommandoen. Standard er alle
{
"name": "experiment"
}

Oppretter en ny, uavhengig maskin fra den eksisterende maskinens tilstand.

FeltTypePåkrevdBeskrivelse
namestringjaNavn på den nye maskinen
instancestringneiFork én bestemt instans
{
"domains": [
"example.com",
"www.example.com"
]
}

Pigeon håndterer TLS og sertifikatfornyelse automatisk.

POST /v1/volumes
GET /v1/volumes
GET /v1/volumes/{id}
PUT /v1/volumes/{id}
DELETE /v1/volumes/{id}
GET /v1/volumes/{id}/snapshots
POST /v1/volumes/{id}/snapshots
DELETE /v1/volumes/{id}/snapshots/{snapshot_id}

Eksempel:

{
"name": "data",
"size": "10GB",
"constraints": {
"regions": ["eu-west"]
}
}
FeltTypePåkrevdBeskrivelse
namestringjaNavn på volumet
sizestringjaStørrelse, for eksempel 10GB eller 500GB
constraintsobjectneiBegrensninger for hvor volumet kan brukes
snapshot_idstringneiOpprett volumet fra et snapshot

Volumer kobles til maskiner gjennom maskinkonfigurasjonen.

POST /v1/secrets
GET /v1/secrets
DELETE /v1/secrets/{name}

Eksempel:

{
"name": "database-url",
"value": "postgres://..."
}
FeltTypePåkrevdBeskrivelse
namestringjaNavn på hemmeligheten
valuestringjaVerdi

Verdien vises ikke igjen etter at hemmeligheten er opprettet.

GET /v1/regions

Tilgjengelige regioner og tilhørende lokasjoner.

GET /v1/usage
GET /v1/machines/{id}/usage

Målt forbruk (CPU, minne, lagring og nettverk).