Quickstart
Four steps, a few minutes, with the CLI. Rather use curl? With curl and an API key
does the same over the API.
1. Sign up
Create an account at raw.computer/sign-up and verify your email. You get an org
(it holds the wallet) with one workspace called default (it holds keys and sandboxes). See
Concepts for how the two relate.
2. Install the CLI and sign in
curl -fsSL https://raw.computer/install.sh | sh
raw login
raw login shows a code and opens the console, where you check the code and approve it. The CLI keeps a personal
token that acts as you, in your workspaces, and keeps itself up to date.
3. Check who you are
raw whoami
Person ada <ada@example.com> (usr_DEMJ4NCDUxm2h7orD6T6WkB16m74Tvx8)
Token raw CLI on laptop (key_01m6xxge1kf83t1tk6pss3awgm, personal; stored by raw login)
Workspace default · Default (ws_01m6xxgde9f2c9q3y3gn9e8zdp) as admin
Org ada (org_01m6xxgde9eaer8hxj9q8kx58d)
API https://raw.computer (version 2026-11-08)
Add --json to any command for the API's own JSON (here, the answer of GET /v1/me).
4. Create a sandbox
raw sandboxes create --class std --size 4x8
During early access no cell is open to customers, so this is the answer you get today:
raw: No cell serves std yet: raw.computer is in early access. [capacity_unavailable]
next: Read the early-access note; sandbox creates open when the first cell does.
see: https://raw.computer/docs/limits#early-access
docs: https://raw.computer/docs/errors#capacity_unavailable
It is honest on purpose: a request that no cell can serve is refused rather than queued, so nothing waits for capacity
that does not exist, and the CLI exits 1. Once cells open, the same command starts a sandbox, or queues it with its
position and ETA (Concepts › The queue).
With curl and an API key
In the console, open API keys, give the key a name and choose Create key. The key starts with rc_live_ and is
shown once; only its hash is kept. A key acts in one workspace, as developer (reads and writes, the default) or
viewer (reads), and never at org level. Keep it in an environment variable:
export RAW_API_KEY="rc_live_…"
Check who you are:
curl https://raw.computer/v1/me \
-H "Authorization: Bearer $RAW_API_KEY" \
-H "Raw-Version: 2026-11-08"
{
"object": "me",
"user": {
"object": "user",
"id": "usr_DEMJ4NCDUxm2h7orD6T6WkB16m74Tvx8",
"name": "ada",
"email": "ada@example.com"
},
"api_key": {
"object": "api_key",
"id": "key_01m6xxge1kf83t1tk6pss3awgm",
"name": "laptop",
"kind": "workspace",
"relation": "developer"
},
"workspace": {
"object": "workspace",
"id": "ws_01m6xxgde9f2c9q3y3gn9e8zdp",
"code": "default",
"name": "Default",
"org": { "object": "org", "id": "org_01m6xxgde9eaer8hxj9q8kx58d", "name": "ada" },
"relation": "developer"
},
"raw_version": "2026-11-08"
}
Raw-Version pins the API version your code was written against. Leave it out and the request is answered in the
version your key is pinned to: the one that was current on the day you made the key. See
API › Versions.
Create a sandbox:
curl https://raw.computer/v1/sandboxes \
-H "Authorization: Bearer $RAW_API_KEY" \
-H "Raw-Version: 2026-11-08" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "class": "std", "size": "4x8" }'
HTTP/1.1 503 Service Unavailable
Content-Type: application/json; charset=utf-8
Raw-Version: 2026-11-08
{
"error": {
"code": "capacity_unavailable",
"message": "No cell serves std yet: raw.computer is in early access.",
"next_step": {
"message": "Read the early-access note; sandbox creates open when the first cell does.",
"url": "https://raw.computer/docs/limits#early-access"
},
"docs": "https://raw.computer/docs/errors#capacity_unavailable"
}
}
An error never holds on to its Idempotency-Key, so the same request can be sent again later. Once cells open, the
same call answers 201 with the sandbox starting, or 202 with it queued and its position and ETA.
The CLI takes the same key: RAW_API_KEY=rc_live_… raw sandboxes list.