Skip to content

Compute API ​

Rent GPUs on the Meris network by the hour. AI labs and anyone training or fine-tuning models send a container image and the GPUs it needs; the network runs it on contributor hardware and bills the hours it ran.

text
Base URL   https://app.meris.network/v1
Auth       Authorization: Bearer mk_live_…

1. Create a key ​

Sign in at app.meris.network, open API and click New key. The key starts with mk_live_ and is shown once; store it as a secret on your server.

2. Get credit ​

Jobs are billed from prepaid credit. During early access, credit is added by the Meris team: message @merisdotnetwork on X with the email on your account. Your balance and every job appear on the API page.

3. Check what is online ​

sh
curl https://app.meris.network/v1/gpus

Returns each GPU type online now, its VRAM, how many are online and the current hourly rate. See GPUs and rates.

4. Submit a job ​

sh
curl https://app.meris.network/v1/jobs \
  -H "Authorization: Bearer $MERIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "ghcr.io/acme/finetune:latest",
    "command": ["python", "train.py", "--epochs", "3"],
    "gpu": { "min_vram_gb": 24, "count": 1 },
    "max_hours": 4
  }'
python
import os, requests

res = requests.post(
    "https://app.meris.network/v1/jobs",
    headers={"Authorization": f"Bearer {os.environ['MERIS_API_KEY']}"},
    json={
        "image": "ghcr.io/acme/finetune:latest",
        "command": ["python", "train.py", "--epochs", "3"],
        "gpu": {"min_vram_gb": 24, "count": 1},
        "max_hours": 4,
    },
)
print(res.status_code, res.json())
js
const res = await fetch('https://app.meris.network/v1/jobs', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.MERIS_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    image: 'ghcr.io/acme/finetune:latest',
    command: ['python', 'train.py', '--epochs', '3'],
    gpu: { min_vram_gb: 24, count: 1 },
    max_hours: 4,
  }),
});
console.log(res.status, await res.json());

A placed job answers 202 with the GPU it landed on and the rate it runs at. See Jobs.

Before you build on it ​

  • Capacity follows contributors. GPUs come and go as their owners use them. When no matching GPU is free the API answers 503 no_capacity and nothing is charged; retry with backoff.
  • Your code runs on contributor hardware. Do not put secrets or personal data in an image or its environment that you would not show a third party. See Security and privacy.
  • Bring your own storage. A job's disk is wiped when it ends. Write checkpoints and results to your own bucket.

Reference ​