12curl "https://app.opencomputer.dev/api/capacity/calendar?from=2026-04-29T02:00:00Z&to=2026-04-29T04:00:00Z" \ -H "X-API-Key: $OPENCOMPUTER_API_KEY"
| Query param | Required | Notes |
from | yes | Window start, aligned to 15 minutes, UTC. |
to | yes | Window end, aligned to 15 minutes, UTC. |
1234567891011121314{ "from": "2026-04-29T02:00:00Z", "to": "2026-04-29T04:00:00Z", "resource": "memory_gb", "intervals": [ { "startsAt": "2026-04-29T02:00:00Z", "endsAt": "2026-04-29T02:15:00Z", "reservationLimitGb": 300, "reservedGb": 80, "reservableGb": 220 } ] }
| Field | Meaning |
from, to | The query window, echoed back. |
resource | Always memory_gb in v1. |
intervals | One row per 15-minute interval in the window. |
| Field | Meaning |
startsAt, endsAt | The 15-minute UTC interval. |
reservationLimitGb | Maximum GB this org may commit in this interval (your max_memory_gb). |
reservedGb | Total GB this org already has reserved in this interval. |
reservableGb | Additional GB the server would currently accept. This is the number to plan against. |
now
and a reservation's startsAt. Intervals starting sooner are returned
in the calendar (so you can see your existing commitments) but the
write endpoint rejects new reservations against them.reservableGb is the planning fieldreservableGb. The other fields are context:reservationLimitGb minus reservedGb is your remaining headroom under
your org's per-interval cap. The server may still reduce reservableGb
below that headroom because of platform-level capacity.reservedGb lets you confirm what you already hold without a separate
call to GET /api/capacity/reservations.capacity_not_available and you read
again.12GET /api/capacity/calendar → reservableGb: 220 POST /api/capacity/reservations capacityGb: 80 → applied
12GET /api/capacity/calendar → reservableGb: 48 POST /api/capacity/reservations capacityGb: 80 → rejected with reservableGb: 28
reservableGb, or123456POST /api/capacity/reservations intervals: [ 02:00 → 02:15, 80 GB 02:15 → 02:30, 80 GB # only 30 available ] → rejected; nothing reserved
from–to ranges aligned to the 15-minute
grid. Practical guidance:reservableGb.4 ×
hours rows). Chunk your queries if you need months.GET /api/capacity/reservations for
the audit log.reservationLimitGb reflects current
policy.