Get started

Quickstart

From zero to your first generated image in three steps. You need a Rogue Studio account with credits and an invite to the console.
  1. Sign in

    Open the console and sign in with the email and password of your Rogue account. The password goes to Rogue once to connect your account and is never stored.

    The first person claims the console with the setup code; everyone after that joins with an invite link from the owner or an admin.

  2. Create a key

    On the API keys page, press Create key, give it a name and keep the default scopes. Copy the key when it appears: it is shown once. Keep it in an environment variable:

    Terminal
    export ROGUE_API_KEY="rk_live_..."
  3. Make a call

    Ask for your account. If this answers with your Rogue profile, you are connected.

    curl "https://rogue-api.sentryq-va.com/v1/account" \
      -H "Authorization: Bearer $ROGUE_API_KEY"

Generate an image

Start a generation. It answers right away with status 202 and a generation in the queued state. Leave out model to use the platform's default image model.

curl -X POST "https://rogue-api.sentryq-va.com/v1/images/generations" \
  -H "Authorization: Bearer $ROGUE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "prompt": "portrait of a woman in a red dress, golden hour, 35mm film",
  "aspect_ratio": "2:3"
}'
Response: 202 Accepted
{
  "id": "gen_01k6g2m9x4c8vq3n7r5t2y8w0z",
  "object": "generation",
  "kind": "image",
  "status": "queued",
  "model": "xxxv2alt-sd-50prostandard",
  "cost": {
    "credits": 40
  },
  "outputs": [],
  "error": null,
  "created_at": "2026-09-28T12:00:00.000Z"
}

Then wait for it. With wait=60 the request holds for up to 60 seconds and returns as soon as the generation finishes.

curl "https://rogue-api.sentryq-va.com/v1/generations/gen_01k6g2m9x4c8vq3n7r5t2y8w0z?wait=60" \
  -H "Authorization: Bearer $ROGUE_API_KEY"

When status is succeeded, outputs[].url holds your image. If it is still queued or running, call again. Videos take minutes, so for anything long running prefer webhooks.

Send an Idempotency-Key with every POST

If a request times out on your side, retry it with the same key: you get the first generation back and are never charged twice.

Where to go next