Peak AI API

An OpenAI-compatible chat completions API. Point any OpenAI SDK at https://ai.pearlfibers.com/v1 and bring a Peak API key.

Base URL
https://ai.pearlfibers.com/v1
Auth
Authorization: Bearer sk-peak-…
Get a key
Request access

Models & pricing

Rates are in USD per million tokens. Costs are computed per request and frozen at write time — rate changes do not affect historical bills.

Model IDDisplay nameContextCapabilitiesInputOutput
peak-v4.3 Peak AI V4.3 65,536 tokens text $1.25/MTok $10/MTok
peak-v4.3-light Peak AI V4.3 Light 65,536 tokens text $0.3/MTok $2.5/MTok
peak-v4.3-vision Peak AI V4.3 Vision 32,768 tokens vision $1.25/MTok $10/MTok

Quickstart

curl

curl https://ai.pearlfibers.com/v1/chat/completions \
  -H "Authorization: Bearer $PEAK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "peak-v4.3-light",
    "messages": [
      {"role": "system", "content": "You are concise."},
      {"role": "user",   "content": "What is the capital of France?"}
    ]
  }'

Python (openai SDK)

from openai import OpenAI

client = OpenAI(
    api_key="sk-peak-...",
    base_url="https://ai.pearlfibers.com/v1",
)

resp = client.chat.completions.create(
    model="peak-v4.3",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)

Node.js (openai SDK)

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.PEAK_API_KEY,
  baseURL: "https://ai.pearlfibers.com/v1",
});

const resp = await client.chat.completions.create({
  model: "peak-v4.3",
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(resp.choices[0].message.content);

LangChain

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="peak-v4.3",
    api_key="sk-peak-...",
    base_url="https://ai.pearlfibers.com/v1",
)
print(llm.invoke("Hello!").content)

Streaming

Set stream: true to receive Server-Sent Events. Each event is a chat.completion.chunk, ending with data: [DONE]. Token usage arrives as a final chunk before [DONE].

resp = client.chat.completions.create(
    model="peak-v4.3-light",
    messages=[{"role": "user", "content": "Stream me a haiku."}],
    stream=True,
)
for chunk in resp:
    delta = chunk.choices[0].delta.content if chunk.choices else None
    if delta:
        print(delta, end="", flush=True)

Rate limits

Limits are enforced per API key on a tumbling 60-second window. The defaults are 60 requests/min and 200,000 tokens/min — your workspace admin can raise or lower these per key.

Every response carries these headers:

  • X-RateLimit-Limit-Requests / X-RateLimit-Remaining-Requests
  • X-RateLimit-Limit-Tokens / X-RateLimit-Remaining-Tokens
  • X-RateLimit-Reset — seconds until the bucket resets

When you hit a limit you'll get 429 with Retry-After. A monthly usage cap (if set by your admin) returns 402 usage_cap_exceeded until the cap is raised or the month rolls over.

Errors

All errors use OpenAI's shape so existing SDK error handlers work unchanged:

{
  "error": {
    "message": "Human-readable explanation.",
    "type": "invalid_request_error",
    "code": "missing_model"
  }
}
HTTPCodeMeaning
400missing_modelThe request didn't include a model field.
400missing_messagesThe request didn't include a messages array.
400invalid_messages / invalid_roleA message was malformed or used an unsupported role.
401missing_authorizationNo Authorization: Bearer header.
401invalid_key_formatThe key doesn't match sk-peak-<64 hex>.
401invalid_key / revoked_keyUnknown or revoked key.
402usage_cap_exceededThis account hit its monthly cap.
403access_revokedAPI access has been revoked for the workspace.
404model_not_foundThat model isn't active on Peak AI.
429requests_per_minute_exceededRPM bucket full — see Retry-After.
429tokens_per_minute_exceededTPM bucket full — see Retry-After.
502upstream_errorThe upstream Peak provider returned an error.