DedicatedMac API Reference
Every public DedicatedMac endpoint, with authentication, request and response shapes, and copy-paste curl examples.
Base URL https://dedicatedmac.io · OpenAPI 3.1 specification
Typical flow
GET /api/sku-availabilityto see which configurations are in stock.- If the wanted SKU is
true,POST /api/checkoutto get a Stripe Checkout URL, then hand that URL to a person to pay. - If it is
false,POST /api/waitlistwith the same SKU and an email address. - Credentials are emailed once the machine is provisioned; ongoing management lives in the customer portal.
/api/sku-availability
Check live stock for every DedicatedMac plan
Returns a boolean per SKU indicating whether at least one Mac mini of that generation and configuration is AVAILABLE with remote-access credentials. This is the same call the pricing page makes before it decides whether to show a checkout button or a waitlist button. The response is never cached; ask again immediately before starting a checkout.
Authentication
None. Public, unauthenticated, no API key.
Request body
None. This endpoint takes no parameters.
Responses
200Availability map keyed by SKU id.
{
"availability": {
"standard": true,
"standard_plus": false,
"ultimate": true
}
}500Inventory could not be read.
{ "error": "Unable to load availability" }Example
curl -sS https://dedicatedmac.io/api/sku-availability
/api/waitlist
Join the waitlist for an out-of-stock configuration
Records an email address against a specific SKU and billing period so we can notify that person when the configuration is back in stock. Use this when GET /api/sku-availability reports the SKU as false.
Authentication
None. Public, unauthenticated, no API key.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| sku | string | yes | Which Mac configuration to be notified about.standardstandard_plusultimate |
| billing | string | no | Billing period of interest. Defaults to monthly if omitted or unrecognised.dailyweeklymonthlyquarterly |
| string | yes | Address to notify. Normalised to lowercase. | |
| name | string | no | Full name, used only to personalise follow-up. |
Responses
200Recorded.
{ "ok": true }400Missing or malformed sku or email.
{ "error": "Invalid plan selection" }500Unexpected server error.
Example
curl -sS -X POST https://dedicatedmac.io/api/waitlist \
-H 'Content-Type: application/json' \
-d '{"sku":"ultimate","billing":"monthly","email":"you@example.com"}'/api/checkout
Create a Stripe Checkout session for a rental
Creates a Stripe subscription Checkout session and returns its hosted URL. The caller (or the end user) must open that URL in a browser to enter payment details; there is no headless purchase path. Daily billing is priced but not self-serve — contact sales for it. M6 supports weekly or monthly billing. If the SKU is out of stock the call fails with 409; use POST /api/waitlist for M4 or POST /api/waitlist/m6 for M6.
Authentication
Optional. Send `Authorization: Bearer <Firebase ID token>` to bind the session to a signed-in portal account; the token's email then overrides the email in the body. Without a token the call is anonymous and the supplied email is not treated as proof of ownership.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| sku | string | yes | Mac generation and configuration to rent.standardstandard_plusultimatem6_standardm6_ultimate |
| billing | string | yes | Billing period.dailyweeklymonthlyquarterly |
| string | yes | Billing email. Ignored when a valid Firebase ID token is supplied. | |
| name | string | no | Full name passed to Stripe as the customer name. |
Responses
200Session created. Open `url` in a browser to pay.
{ "url": "https://checkout.stripe.com/c/pay/cs_live_..." }400Invalid plan selection or invalid email.
{ "error": "Invalid plan selection" }409That configuration is out of stock; join the waitlist instead.
{ "error": "This configuration is currently out of stock. Join the waitlist to get notified." }500Stripe or catalog error.
Example
curl -sS -X POST https://dedicatedmac.io/api/checkout \
-H 'Content-Type: application/json' \
-d '{"sku":"standard","billing":"monthly","email":"you@example.com"}'Not available
- There is no MCP server for DedicatedMac.
- There is no client SDK; the API is three plain HTTP endpoints, so use any HTTP client.
- There are no API keys and no OAuth application. The public endpoints are unauthenticated, and the only credential the API understands is a Firebase ID token belonging to an existing portal account.
- There is no headless purchase: POST /api/checkout returns a Stripe Checkout URL that a human must open.
- There is no API for controlling a rented Mac. Restart and credential actions live in the signed-in customer portal at /dashboard.
Questions about the API?
Questions about the API, or a capability you need that is not listed here: support@dedicatedmac.io.
Back to the developer portal