Chat / Text

Reel 31 API

Integrate Reel 31 via the SkillBoss Wholesale API with a single key. See your wholesale dashboard for the exact model identifier and live availability.

model: reel-31-api
Wholesale key required. This endpoint accepts wholesale keys only. Have access? Get your key on the wholesale dashboard. Not on wholesale yet? Email admin@skillboss.co with your use case — we'll get you provisioned.

Quickstart

SkillBoss Wholesale is OpenAI SDK-compatible — point any OpenAI client at https://api.skillboss.co/v1 and pass your wholesale key as a bearer token. Works out of the box with the official OpenAI Python and Node SDKs, Vercel AI SDK, LangChain, LlamaIndex, and most other OpenAI-shaped clients.

bashcurl https://api.skillboss.co/v1/chat/completions \
  -H "Authorization: Bearer $SKILLBOSS_WHOLESALE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "reel-31-api",
    "messages": [
      {"role": "user", "content": "Hello"}
    ]
  }'

Your first 200 response is the fastest way to confirm setup. From there, swap in your real prompt and tune the model-specific parameters listed below.

Authentication

Every request must include your wholesale key. The header name depends on the endpoint — match the SDK you're using:

bashAuthorization: Bearer $SKILLBOSS_WHOLESALE_KEY

Treat the wholesale key like a password — never commit it to source control or ship it in client-side bundles. Rotate from the wholesale dashboard if exposed. Standard (non-wholesale) console keys are rejected at the gateway with 401.

Code examples

Python
pythonimport os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["SKILLBOSS_WHOLESALE_KEY"],
    base_url="https://api.skillboss.co/v1",
)

resp = client.chat.completions.create(
    model="reel-31-api",
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
JavaScript / TypeScript
typescriptimport OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.SKILLBOSS_WHOLESALE_KEY,
  baseURL: "https://api.skillboss.co/v1",
});

const resp = await client.chat.completions.create({
  model: "reel-31-api",
  messages: [{ role: "user", content: "Hello" }],
});

console.log(resp.choices[0].message.content);

Parameters

Standard OpenAI chat completion parameters — pass in the request body as JSON. All fields below work across every chat model on the gateway.

NameTypeRequiredDescription
modelstringrequiredModel id. Use reel-31-api.
messagesarrayrequiredConversation history. Each item has role (user|assistant|system|tool) and content (string or array of multimodal content blocks).
streambooleanoptionalSet true for SSE streaming token-by-token. Required for low-latency UIs.
temperaturenumberoptionalSampling temperature (0–2). Higher = more random. Default 1.0.
max_tokensintegeroptionalCap on tokens in the response. Legacy field — for GPT-5+ prefer max_completion_tokens (server auto-converts but the new field is canonical).
max_completion_tokensintegeroptionalPreferred replacement for max_tokens on GPT-5+ models. Counts only the completion (not reasoning) tokens.
top_pnumberoptionalNucleus sampling cutoff (0–1). Default 1.0. Use *either* temperature *or* top_p, not both.
frequency_penaltynumberoptionalPenalty (−2 to 2) for tokens already used — reduces verbatim repetition. Default 0.
presence_penaltynumberoptionalPenalty (−2 to 2) for tokens that have appeared at all — encourages topic shift. Default 0.
stoparray<string>optionalUp to 4 strings — generation halts (without emitting) when any appears.
seedintegeroptionalBest-effort deterministic sampling. Pair the same seed + identical messages for reproducible-ish output (OpenAI does not 100% guarantee).
logprobsbooleanoptionalWhen true, return log-probabilities for each output token. Use top_logprobs (0–20) to also include alternatives.
reasoning_effortstringoptionalGPT-5+ reasoning models only. One of minimal, low (server default), medium, high. Higher = more reasoning tokens, slower + more expensive.
toolsarrayoptionalFunction-calling definitions (OpenAI tool-use schema). Each item: { type: "function", function: { name, parameters: <JSON Schema> } }.
tool_choicestring | objectoptionalOne of "auto", "none", "required", or { type: "function", function: { name: "..." } } to force a specific tool.
response_formatobjectoptional{ "type": "json_object" } for any-JSON, or { "type": "json_schema", "json_schema": {...} } for strict structured output.

Endpoint

MethodPOST
URLhttps://api.skillboss.co/v1/chat/completions
Auth headerAuthorization: Bearer $SKILLBOSS_WHOLESALE_KEY
Content-Typeapplication/json
StreamingSet stream: true in the request body for SSE token-by-token streaming.

Errors

The API uses standard HTTP status codes:

200OKRequest succeeded.
400Bad RequestInvalid model, missing required field, or malformed JSON.
401UnauthorizedMissing or invalid wholesale key. Non-wholesale console keys are rejected here.
402Insufficient CreditsWholesale balance too low — top up on the wholesale dashboard.
429Rate LimitedToo many requests. Back off with exponential delay.
500Server ErrorTransient upstream issue. Safe to retry.
503Upstream UnavailableDiscount pool capacity issue (lite tier). Retry or fall back to standard tier.

Pricing

Wholesale pricing is your account-specific discount × vendor list price. Discount rate depends on your contract — see the live numbers on the wholesale dashboard. The dashboard shows your current cost per 1M tokens (or per image / per second) for every model.

No platform markup on standard token billing. Volume tiers + monthly caps are configurable per key.