OpenAI-compatible apps

https://livepairai.com/v1/agent is a stock OpenAI-compatible surface. Any app that takes a base URL + API key can plug in unmodified:

Base URL: https://livepairai.com/v1/agent
API key:  lp_…   (sent as Authorization: Bearer or x-api-key)
Path the app callsWhat it gets
POST /v1/agent/chat/completionsChat completion on the model you name — see textModels in the catalog
GET /v1/agent/modelsModel list in OpenAI {object:"list"} shape (plus extended catalog fields)
POST /v1/agent/images/generationsOpenAI Images API — {prompt, model, size, n, response_format} → {created, data:[{url}]}
POST /v1/agent/videosOpenAI Videos API (Sora shape) — {prompt, model, size, seconds} → job object; GET /v1/agent/videos/{id} polls status, GET /v1/agent/videos/{id}/content fetches the mp4

Calls bill your prepaid credits at catalog list price — top up at /credits. No subscription, no streaming required.

SillyTavern

Chat works today via Custom (OpenAI-compatible):

  1. API Connection → Custom (OpenAI-compatible)
  2. Custom Endpoint: https://livepairai.com/v1/agent
  3. API Key: your lp_ key (API Key Manager)
  4. Model: pick from the fetched list (e.g. deepseek/deepseek-v4-flash, openai/gpt-6-luna, anthropic/claude-sonnet-5-5)

Image generation: SillyTavern's built-in image sources are pinned per provider and its OpenAI source targets api.openai.com only — a named source needs an upstream change. We've opened the feature discussion at SillyTavern/SillyTavern#6116; until it lands, image calls can't be pointed at LivePair.

Open WebUI

  • Chat: Admin Panel → Settings → Connections → OpenAI API → base https://livepairai.com/v1/agent, key lp_… → model list loads automatically.
  • Images: where an OpenAI-compatible image engine is configured with a custom base URL, the same base + key serves /images/generations.

Cherry Studio

Settings → Model Providers → Add a provider of type OpenAI → base https://livepairai.com/v1/agent, key lp_… → add the model ids you want to use.

new-api

Add a channel: type OpenAI, base URL https://livepairai.com/v1/agent, key lp_…. The gateway forwards /chat/completions and /images/generations as-is, so a single channel covers chat + images.

LibreChat

librechat.yaml custom endpoint:

endpoints:
  custom:
    - name: "LivePair"
      baseURL: "https://livepairai.com/v1/agent"
      apiKey: "${LIVEPAIR_API_KEY}"
      models:
        fetch: true

Image generation wire format

POST /v1/agent/images/generations mirrors the OpenAI Images API:

{
  "prompt": "a red fox on wet pavement, neon reflections",
  "model": "seedream-5.0",
  "size": "1024x1024",
  "response_format": "url"
}

→ { "created": 1735000000, "data": [{ "url": "https://…/img.png" }] }

  • model accepts LivePair image model ids (the catalog's mode: "t2i" entries) — omit it for the default. Unknown ids return 400 rather than silently swapping models.
  • size maps to aspect ratio: 1024x1024→1:1, 1792x1024→16:9, 1024x1792→9:16, 1536x1024→3:2, 1024x1536→2:3.
  • n must be 1. LivePair extension fields aspectRatio, resolution, imageSize are honored when the model advertises them.
  • response_format: "b64_json" also works.

Video wire format

POST /v1/agent/videos mirrors the OpenAI Videos API (Sora):

{ "prompt": "a paper boat in a neon canal, rain", "model": "wan-3",
  "size": "1280x720", "seconds": "5" }

→ { "id": "…", "object": "video", "status": "in_progress", … } — async by spec. Poll GET /v1/agent/videos/{id} until status: "completed", then fetch GET /v1/agent/videos/{id}/content (302 → mp4 URL). model takes mode: "t2v" catalog ids; size maps to aspect ratio + resolution tier; seconds to the duration ladder.

For image-to-image, image-to-video, and the extended settings matrix, use the full catalog surface POST /v1/agent/generate — same lp_ key, or x402 per-call USDC for keyless agents. See API reference.