Billing

Jobs draw from a GBP wallet. The published Mac Studio rate is on the pricing page, and you add funds in the billing dashboard.

Rates

The current offer is a Mac Studio M3 Ultra with 512 GB unified memory and an 80-core GPU:

Before a job is queued, the API estimates cost from the matching hosts' hourly rates, the maximum duration, and a priority multiplier: low 0.8, normal 1.0, high 1.5, critical 2.0. The platform's 15% share is taken from that listed rate. It is not added on top. The customer total matches the listed hourly rate, excluding VAT.

Python
estimate = client.jobs.estimate(
    type="inference",
    model_id="mlx-community/Llama-3.2-1B",
    min_memory_gb=16,
    max_duration_minutes=60,
    priority="normal",
)

POST /api/v1/jobs/estimate returns an estimate object. When a host matches, available is true and the nested estimate has min_cost_gbp, max_cost_gbp, avg_cost_gbp, platform_fee_gbp, and total_estimate_gbp. available: false means no selected host can run the model, or none match the memory and GPU requirement.

Wallet

GET /api/v1/wallet returns:

GET /api/v1/wallet/transactions lists recent movements. client.wallet.get_balance() reads the same wallet. Adding funds is done in the billing dashboard, which charges the card and credits the wallet. The Python client does not add funds itself.

Submit checks the wallet against max_cost_gbp. If the balance is lower, the API returns 402:

402
{
  "success": false,
  "message": "Insufficient balance",
  "errors": { "required": 6.95, "available": 0 }
}

A completed job reports compute_seconds and cost_gbp on GET /api/v1/jobs/{uuid}. Host earnings for a machine you share are under GET /api/v1/host/earnings and the host dashboard.