Quickstart
The gateway base URL is https://llms.party/v1. Authenticate with your
virtual key:
export LLMS_PARTY_KEY="sk-..."Keys are issued by your administrator. Each key is scoped to model groups and a budget; ask for a new key if you need a group it does not include.
1. Confirm the key
GET /v1/models is scoped to what the key may call. It is the cheapest
round-trip and the first thing to try when a request fails.
curl -sS "https://llms.party/v1/models" \
-H "Authorization: Bearer $LLMS_PARTY_KEY"A 401 means the key is wrong or revoked. An empty data array means the key
has no model groups.
2. First completion
curl -sS "https://llms.party/v1/chat/completions" \
-H "Authorization: Bearer $LLMS_PARTY_KEY" \
-H "content-type: application/json" \
-d '{
"model": "deepseek-flash",
"messages": [{"role": "user", "content": "Explain an LLM gateway in one sentence."}]
}'import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llms.party/v1',
apiKey: process.env.LLMS_PARTY_KEY,
});
const completion = await client.chat.completions.create({
model: 'deepseek-flash',
messages: [
{ role: 'user', content: 'Explain an LLM gateway in one sentence.' },
],
});
console.log(completion.choices[0]?.message.content);import os
from openai import OpenAI
client = OpenAI(
base_url="https://llms.party/v1",
api_key=os.environ["LLMS_PARTY_KEY"],
)
completion = client.chat.completions.create(
model="deepseek-flash",
messages=[{"role": "user", "content": "Explain an LLM gateway in one sentence."}],
)
print(completion.choices[0].message.content)Any OpenAI-compatible client works. Chat, streaming and vision use the OpenAI chat shape; video uses the video API.
3. Stream it
Set "stream": true and read SSE. Use streaming for requests that may think
for more than a few seconds; an idle response can otherwise hit the gateway's
proxy timeout before the first byte.
curl -N -sS "https://llms.party/v1/chat/completions" \
-H "Authorization: Bearer $LLMS_PARTY_KEY" \
-H "content-type: application/json" \
-d '{
"model": "deepseek-v4-pro",
"stream": true,
"messages": [{"role": "user", "content": "Plan a migration in three bullets."}]
}'4. Try it without a terminal
Same completion, streamed inline, against the live gateway.
Create a MiniMax H3 or BytePlus Seedance job and watch it poll.
What each status code means and where budgets bite.