BETA · OpenAI-Compatible API

AI models for developers,
billed in Manat

Connect GPT-4o, Claude, Llama, Gemini and dozens of other models through a single OpenAI-compatible endpoint — pay in TMT, no foreign cards required.

Get started free How it works
🔌
OpenAI-compatible

Works with any OpenAI SDK — Python, Node.js, curl. Just change base_url, nothing else.

🤖
Many models, one key

GPT-4o, Claude Sonnet, Llama 4, Gemini Flash, DeepSeek and more — through a single API key.

💳
Pay in TMT

Top up via USDT TRC-20. Balance converts to Manat automatically at the current rate.

Auto-failover

If one provider goes down, requests are automatically rerouted to a backup with no changes on your side.

🧮
Embeddings support

Use /v1/embeddings for vector search and RAG pipelines with nomic-embed, mxbai and others.

📊
Usage dashboard

Track spending, token usage and transaction history in the client portal in real time.

How it works
1
Register and top up
Create an account, go to the Deposit tab and send USDT (TRC-20) to your personal address. Balance is credited within 1–2 minutes.
2
Create an API key
In the API Keys tab, create a key and copy it immediately — it is shown only once.
3
Make your first request
Point your OpenAI client at our base URL, pass the key as a Bearer token — and you're ready.
4
Free models available
Several models are available for free — great for testing your integration before topping up.
# pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="gw_your_key",
    base_url="/v1",
)

response = client.chat.completions.create(
    model="qwen3.6",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
AI Gateway

Client Portal

If this email is registered, a reset link has been sent.

Set new password

Account created! Please sign in.
Последние новости
Available Balance

TMT (Turkmenistan Manat)
Daily limit of — TMT

Balance is deducted per API request based on token usage. Top up via USDT (TRC-20) on the Deposit tab.

Daily Spend Limit

Set a maximum amount you can spend per day. Set to 0 to disable the limit.

TMT
Usage by day
Loading…
API Keys
Key created! Copy it now — it won't be shown again.
Transaction History
USDT Deposit (TRC-20)

Send USDT on the TRC-20 network to this address. Your TMT balance will be credited automatically within 1-2 minutes after confirmation.

Loading...
Important: Only send USDT (TRC-20) to this address. Sending other tokens may result in permanent loss.
Other Top-Up Methods

You can also top up your balance via mobile transfer, cash, or any other convenient method. Contact the administration to arrange the details.

Available Models

All models available for use via the API. Prices are per 1 million tokens and update automatically.

Loading…
API Documentation

Everything you need to integrate AI Gateway into your application.

Base URL
Quick Start
  1. Register an account on this portal and top up your TMT balance via the Deposit tab.
  2. Create an API key on the API Keys tab. Copy it immediately — it is shown only once.
  3. Make your first request — see examples below. Use the API key as a Bearer token.
Code Examples
# Replace YOUR_API_KEY with your key from the API Keys tab

curl -X POST /v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.6",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

# Streaming
curl -X POST /v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.6",
    "messages": [{"role": "user", "content": "Hello!"}],
    "stream": true
  }'
# pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="/v1",
)

# Regular request
response = client.chat.completions.create(
    model="qwen3.6",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)

# Streaming
stream = client.chat.completions.create(
    model="qwen3.6",
    messages=[{"role": "user", "content": "Explain quantum physics"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
// npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "YOUR_API_KEY",
  baseURL: "/v1",
});

// Regular request
const response = await client.chat.completions.create({
  model: "qwen3.6",
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);

// Streaming
const stream = await client.chat.completions.create({
  model: "qwen3.6",
  messages: [{ role: "user", content: "Explain quantum physics" }],
  stream: true,
});
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Embeddings

For embedding models (e.g. nomic-embed-text, mxbai-embed-large) use POST /v1/embeddings. Billed by input tokens only (no output tokens).

# Single string
curl -X POST /v1/embeddings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "nomic-embed-text", "input": "Text to embed"}'

# Batch
curl -X POST /v1/embeddings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "nomic-embed-text", "input": ["First text", "Second text"]}'
result = client.embeddings.create(
    model="nomic-embed-text",
    input=["First text", "Second text"],
)
for item in result.data:
    print(f"[{item.index}] len={len(item.embedding)}")
const batch = await client.embeddings.create({
  model: "nomic-embed-text",
  input: ["First text", "Second text"],
});
batch.data.forEach(item =>
  console.log(`[${item.index}] len=${item.embedding.length}`)
);
Available Models

See the Models tab for the full list with prices. Or fetch via API:

curl /v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"
Authentication

Pass your API key in the Authorization header:

Authorization: Bearer gw_your_api_key_here

API keys start with gw_. Never share your key — it grants full access to your balance.

Billing
  • Balance is held in TMT (Turkmenistan Manat).
  • Each request is billed by input + output tokens at the model's rate.
  • Billing happens after the response completes (including streaming).
  • If balance is insufficient, the request returns 402 Payment Required.
  • Top up via USDT TRC-20 on the Deposit tab — credited within 1–2 minutes.
Rate Limits
  • Each API key is limited to 60 requests per minute. Exceeding this returns 429 Too Many Requests with a Retry-After: 60 header.
  • Each account is limited to 2000 requests per day. The counter resets 24 hours after the first request.
  • If the rate limit is exceeded 10 or more times within one hour, the account is automatically suspended for 24 hours.
  • After the suspension period ends, the account is restored automatically on the next login.
Daily Spend Limit
  • You can set a daily spending cap on the Balance tab. Once reached, new API requests return 402 until the next day.
  • The limit resets 24 hours after your first request of the day.
  • Setting the limit to 0 disables it — no cap is applied.
  • The counter tracks all your API keys combined — it is per account, not per key.
Error Codes
Code Meaning Fix
401Invalid or revoked API keyCheck key on API Keys tab
402Insufficient balanceTop up via Deposit tab
404Model not foundCheck model name via GET /v1/models
503All providers unavailableRetry in a few minutes
News