v1

API documentation

Starscoo exposes an OpenAI-compatible REST API at api.starscoo.space/v1. Drop it into any OpenAI SDK and start shipping.

Quickstart

Three steps: create a key, set the base URL, send a request.

STEP 1

Create an API key in the dashboard.

STEP 2

Point your SDK at api.starscoo.space/v1.

STEP 3

Use any supported model id.

Authentication

Pass your key as a bearer token. Keys are shown once at creation — store them securely.

http
Authorization: Bearer sk-starscoo-...

Chat completions

A single endpoint for every supported model.

curl
curl https://api.starscoo.space/v1/chat/completions \
  -H "Authorization: Bearer $STARSCOO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-7",
    "messages": [
      {"role": "system", "content": "You are concise."},
      {"role": "user", "content": "Summarize quantum tunneling."}
    ]
  }'
javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.STARSCOO_KEY,
  baseURL: "https://api.starscoo.space/v1",
});

const res = await client.chat.completions.create({
  model: "claude-opus-4-7",
  messages: [{ role: "user", content: "Hello!" }],
});

console.log(res.choices[0].message.content);
python
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["STARSCOO_KEY"],
    base_url="https://api.starscoo.space/v1",
)

response = client.chat.completions.create(
    model="claude-opus-4-7",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)

Streaming

Server-Sent Events end-to-end. Pass stream: true.

javascript
const stream = await fetch("https://api.starscoo.space/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.STARSCOO_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "claude-opus-4-7",
    messages: [{ role: "user", content: "Stream me a haiku" }],
    stream: true,
  }),
});

const reader = stream.body.getReader();
const decoder = new TextDecoder();
while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  process.stdout.write(decoder.decode(value));
}

Models

List models with GET /v1/models. Currently supported:

IDProviderContext
claude-opus-4-7Anthropic200K
claude-sonnet-4-6Anthropic200K
gpt-5OpenAI128K
gpt-5-miniOpenAI128K
codex-1OpenAI128K

Errors

All errors are JSON. The code field is stable for programmatic handling.

json
{"error": {"code": "rate_limited", "message": "Hourly request limit exceeded."}}

Rate limits

Each API key has an hourly request ceiling and a monthly token cap. Overrides are configurable in the dashboard and enforced at the gateway.