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:
- £6.95 per hour + VAT
- £2,995 per month + VAT for a reserved month
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.
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:
balance, funds you can spendpending, amount held for work in progresslifetime_spentandlifetime_earned
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:
{
"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.