Features / Endpoints

Embeddings, rerank, transcription. Image edits and batches on the same key.

Embeddings, moderation, rerank, transcription, image edits and an OpenAI-compatible Batch API on one key and one balance, priced from the live catalog.

What it does

Embeddings
POST /v1/embeddings in OpenAI’s format, 11 models, priced per million input tokens.
Rerank
POST /v1/rerank in the Cohere and Jina shape: documents scored against a query, best first, with top_n.
Moderation
POST /v1/moderations in OpenAI’s format: flagged, categories and scores for any text.
Transcription and translation
POST /v1/audio/transcriptions and /translations, 3 Whisper and Parakeet models, priced per audio minute and billed by the second.
Image edits
POST /v1/images/edits in OpenAI’s format on the image models that edit, multipart or JSON, with masks where the model takes one.
Batch API
OpenAI-compatible /v1/files and /v1/batches: upload JSONL, get an output and an error file within 24 hours.

Pricing · live catalog, 2026-11-04

TypeModelPrice
EmbeddingsBGE Base EN v1.5$0.1665 per million input tokens
EmbeddingsBGE-EN-ICL$0.03125 per million input tokens
EmbeddingsBGE-M3$0.0295 per million input tokens
EmbeddingsBGE Small EN v1.5$0.0505 per million input tokens
EmbeddingsGemini Embedding 001$0.15 per million input tokens
EmbeddingsMultilingual E5 Large Instruct$0.03125 per million input tokens
EmbeddingsQwen3 Embedding 0.6B$0.0295 per million input tokens
EmbeddingsQwen3 Embedding 8B$0.03125 per million input tokens
EmbeddingsText Embedding 3 Large$0.13 per million input tokens
EmbeddingsText Embedding 3 Small$0.027089 per million input tokens
EmbeddingsText Embedding Ada 002$0.12 per million input tokens
RerankBGE Reranker Base$0.007775 per million input tokens
TranscriptionParakeet TDT 0.6B v3$0.015 per audio minute
TranscriptionWhisper Large v3$0.015 per audio minute
TranscriptionWhisper Large v3 Turbo$0.0012825 per audio minute

Request example

curl · embeddings
curl https://api.uplinkswitch.com/v1/embeddings \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "bge-base-en-v1.5", "input": ["How do I rotate an API key?", "Refund policy"]}'
Python · transcription
from openai import OpenAI

client = OpenAI(base_url="https://api.uplinkswitch.com/v1", api_key="sk-uplink-live-...")

with open("call.mp3", "rb") as f:
    text = client.audio.transcriptions.create(model="whisper-large-v3-turbo", file=f, response_format="srt")
print(text)
curl · Batch API
# 1. Upload a JSONL file, one request per line
curl https://api.uplinkswitch.com/v1/files \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -F purpose=batch \
  -F file=@requests.jsonl
# requests.jsonl:
# {"custom_id": "r1", "method": "POST", "url": "/v1/embeddings", "body": {"model": "bge-base-en-v1.5", "input": "first"}}

# 2. Start the batch with the file id
curl https://api.uplinkswitch.com/v1/batches \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input_file_id": "file-...", "endpoint": "/v1/embeddings", "completion_window": "24h"}'
curl · rerank
curl https://api.uplinkswitch.com/v1/rerank \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bge-reranker-base",
    "query": "How do I rotate an API key?",
    "documents": ["Keys are made in the console.", "Revoke a key with DELETE /v1/keys/{id}.", "Prices follow the catalog."],
    "top_n": 2,
    "return_documents": true
  }'
curl · image edit
curl https://api.uplinkswitch.com/v1/images/edits \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -F model=gpt-image-2 \
  -F image=@product.png \
  -F prompt="Put the bottle on a marble counter, morning light" \
  -F size=1024x1024
  • Every model on this page has its own page with the request; the types are in GET /v1/catalog as type and endpoints.
  • GET /v1/batches/{id} reports progress; GET /v1/files/{id}/content downloads the output and error files.

Image edit models

ModelDeveloperPrice
GPT Image 2 EditOpenAIfrom $0.024 per image
Nano Banana 2 EditGooglefrom $0.0402 per image
Seedream 4.5 EditByteDancefrom $0.0313 per image
FLUX.1 Kontext Pro EditBlack Forest Labsfrom $0.128 per image

Questions

BGE Base EN v1.5 ($0.1665 per million input tokens), BGE-EN-ICL ($0.03125 per million input tokens), BGE-M3 ($0.0295 per million input tokens), BGE Small EN v1.5 ($0.0505 per million input tokens), Gemini Embedding 001 ($0.15 per million input tokens), Multilingual E5 Large Instruct ($0.03125 per million input tokens), Qwen3 Embedding 0.6B ($0.0295 per million input tokens), Qwen3 Embedding 8B ($0.03125 per million input tokens), Text Embedding 3 Large ($0.13 per million input tokens), Text Embedding 3 Small ($0.027089 per million input tokens), Text Embedding Ada 002 ($0.12 per million input tokens). Each takes the OpenAI embeddings request on POST /v1/embeddings.

Per input token at the model’s catalog price. The query counts once beside every document, since a cross-encoder reads each pair, at about four characters a token; the answer’s usage gives the count. Up to 1,000 documents per request. A failed request is not charged.

Per audio minute at the model’s catalog price, on the length the model reports, rounded up to the second. Files up to 25 MB in mp3, mp4, m4a, wav, webm, ogg, flac or aac; json, text, srt, verbose_json or vtt back. POST /v1/audio/translations turns speech in any language into English text on the models whose route can translate.

POST /v1/moderations takes OpenAI’s moderation request and answers with OpenAI’s moderation object: results with flagged, categories and category_scores. With no model the request goes to text-moderation-latest. It is billed per input token, counted as the request’s size over four.

43 media models that list /v1/images/edits in GET /v1/catalog/media. Upload images as multipart image or image[] files (PNG, JPEG or WebP, 20 MB each, 16 at most), or send JSON with images: [{ image_url }]. Name an edit model, or an image model whose -edit twin edits (gpt-image-2 goes to gpt-image-2-edit). A failed edit is given back.

No. Each line runs through the same routes as a direct request, at the normal catalog price, held against the balance and the key’s limits as it runs. Batches take chat completions, completions, embeddings, responses and moderations, up to 50,000 lines and 50 MB per file, within 24 hours.