Sari la conținut

Developer documentation

Documentație Router by MP

API OpenAI compatible cu Claude, GPT, Gemini 3.1 și 100+ modele. SchimbibaseURL, păstrezi codul. Facturare în MDL, deductibilă, conformă GDPR + Legea RM 195/2024.

OpenAI compatibleEndpoint: https://api.megapromoting.com/v1Factură MDL via e-Factura

Pas 1

Quickstart — 5 minute de la zero la primul răspuns

Trei pași: cont nou, cheie API, primul apel. Fără PR de aprobat, fără ceremonie.

1

Creează cont + cheie API

Te înregistrezi la /signup (email companie + parolă sau Google OAuth). În cabinet la /keys generezi o cheie API — tokenul complet se afișează doar o dată la creare.

Recomandat: o cheie pentru fiecare proiect, cu max_budget conservator (ex: $20/lună).

2

Setează baseURL în SDK

Router by MP răspunde la endpoint-ul https://api.megapromoting.com/v1. Codul tău existent merge cu o singură modificare:

Node.js
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.ROUTER_API_KEY,
  baseURL: "https://api.megapromoting.com/v1",
});
Python
from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ["ROUTER_API_KEY"],
    base_url="https://api.megapromoting.com/v1",
)
cURL
export ROUTER_API_KEY="rk_..."
export ROUTER_BASE_URL="https://api.megapromoting.com/v1"
3

Primul apel chat completion

Folosește un model din /models. Exemplu cu Claude Sonnet 4.6:

Node.js
const response = await client.chat.completions.create({
  model: "claude-sonnet-4-6",
  messages: [
    { role: "user", content: "Salut! Răspunde scurt în română." }
  ],
  max_completion_tokens: 500,
});

console.log(response.choices[0]?.message?.content);
Python
response = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[
        {"role": "user", "content": "Salut! Răspunde scurt în română."}
    ],
    max_completion_tokens=500,
)

print(response.choices[0].message.content)
cURL
curl https://api.megapromoting.com/v1/chat/completions \
  -H "Authorization: Bearer $ROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [
      { "role": "user", "content": "Salut! Răspunde scurt în română." }
    ],
    "max_completion_tokens": 500
  }'

Arhitectură

Cum funcționează

Router by MP e un AI gateway: un proxy OpenAI-compatible care normalizează cererile către providerii upstream (Anthropic, OpenAI, Google, Mistral, etc.), tracking-uiește costul cu markup, și emite factură lunară în MDL.

Aplicația ta
OpenAI SDK
Router gateway
api.megapromoting.com/v1
Provider AI
Anthropic / OpenAI / Google
Răspuns + cost
usage + markup
Factură MDL
e-Factura lunar

Tot traficul AI trece prin gateway-ul nostru pe servere OVH în Europa. Logăm doar metadata (model, tokens, latency, request_id). Conținutul mesajelor nu e persistat decât dacă activezi explicit prompt logging.

Catalog

Modele disponibile

100+ modele de la providerii majori, accesibile cu același SDK. Catalogul live la /models.

Securitate

Autentificare + chei API

Cum creezi o cheie

  1. Login în cabinet la /keys
  2. Click Cheie nouă, alegi nume + buget lunar
  3. Selectezi whitelist de modele (opțional, default = toate)
  4. Copiezi tokenul — se afișează O SINGURĂ DATĂ

Header de autentificare

Authorization: Bearer rk_live_...

Tokenul începe cu rk_live_ (productie) sau rk_test_ (sandbox).

Best practices

  • O cheie per proiect (dev, staging, prod separate).
  • Setează max_budget conservator — limita se aplică la nivel de cheie.
  • Rotește cheile la 90 zile sau imediat după orice expunere (chat, commit, screenshot).
  • Nu pune cheia în frontend / mobile — folosește un proxy server-side.
  • Whitelist modele scumpe (Claude Opus, GPT-4o, Veo 3) pentru a evita cost runaway.

Integrări

Compatibilitate SDK

Router by MP e OpenAI compatible la nivel de schema. Orice client care vorbește OpenAI API funcționează cu o modificare de baseURL.

OpenAI Node

JavaScript / TypeScript

schimbi doar baseURL — restul codului identic.

OpenAI Python

Python 3.9+

client = OpenAI(base_url=...) și gata.

OpenAI .NET

C# / .NET 8+

OpenAIClientOptions.Endpoint = api.megapromoting.com/v1

OpenAI Go

Go 1.21+

config.BaseURL = api.megapromoting.com/v1

OpenAI Java

Java 17+

OpenAiService cu custom OkHttp baseUrl.

OpenAI PHP

PHP 8.1+

OpenAI::client(...)->baseUri(api.megapromoting.com/v1)

LangChain JS

JavaScript

ChatOpenAI({ configuration: { baseURL } })

LangChain Python

Python

ChatOpenAI(base_url=...)

LlamaIndex

Python

OpenAI(api_base=...) sau OpenAILike pentru modele non-OpenAI.

Vercel AI SDK

JavaScript

createOpenAI({ baseURL }) — funcționează cu streamText / generateText.

Cloudflare Workers AI

JavaScript

fetch direct sau OpenAI client în Workers runtime.

n8n

low-code

credential OpenAI custom + Base URL override (legacy, dar funcțional).

Reference

Endpoint principal — /v1/chat/completions

99% din requesturi merg aici. Schema identică cu OpenAI Chat Completions API.

Request schema

POST https://api.megapromoting.com/v1/chat/completions
Authorization: Bearer <ROUTER_API_KEY>
Content-Type: application/json

{
  "model": "claude-sonnet-4-6",       // obligatoriu — vezi /models
  "messages": [                         // obligatoriu
    { "role": "system", "content": "..." },
    { "role": "user",   "content": "..." }
  ],
  "max_completion_tokens": 1000,        // opțional, default model
  "temperature": 0.7,                   // opțional, 0-2
  "top_p": 1,                           // opțional
  "stream": false,                      // true = SSE streaming
  "tools": [...],                       // function calling (OpenAI format)
  "tool_choice": "auto",
  "response_format": { "type": "json_object" }
}

Response schema

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1747600000,
  "model": "claude-sonnet-4-6",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "..." },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 42,
    "completion_tokens": 128,
    "total_tokens": 170,
    "cost_usd": 0.00234              // cost client-facing (post-markup)
  }
}

Streaming SSE

const stream = await client.chat.completions.create({
  model: "claude-sonnet-4-6",
  messages: [{ role: "user", content: "Scrie un haiku." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Limite

Rate limits + Budget controls

Rate limits

  • Free: 10 req/min, 100 req/zi
  • Starter (€5): 60 req/min, 5K req/zi
  • Pro (€20): 300 req/min, 50K req/zi
  • Business (€80): 1500 req/min, fără cap zilnic
  • Enterprise: negociat

Header-uri returnate: X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After.

Plafon per cheie (max_budget)

Fiecare cheie are un plafon USD lunar. Când îl atingi, requesturile primesc 402.

  • Setezi la creare sau editezi din /keys
  • Resetare automată în prima zi din lună
  • Alertă email la 80% și 100%
  • Limita e client-facing USD (cu markup inclus)

Evenimente

Webhooks

Configurabile la /settings/webhooks. Notificări HMAC-SHA256 signed pentru evenimente critice.

Event typeCând
wallet.low_balanceWallet sub $5 sau sub 10% din ultimul top-up
wallet.depletedWallet ajuns la $0, requesturi blocate
key.budget_exceededCheie a depășit max_budget lunar
key.budget_warningCheie la 80% din max_budget
invoice.generatedFactură MDL nouă emisă (lunar)
invoice.paidFactură achitată prin Stripe / transfer
model.deprecatedModel upstream va fi retras în 30 zile

Debugging

Erori frecvente — top 10

HTTPÎnseamnăSoluție
400Request invalid (JSON malformat, model lipsă, parametru greșit).Verifică schema: model, messages, max_completion_tokens.
401Cheie absentă, invalidă sau revocată.Confirmă header Authorization: Bearer <key> și că nu e expirată.
402Wallet insuficient sau buget cheie depășit.Alimentează wallet la /billing sau ridică max_budget pe cheie.
403Modelul nu e whitelisted pe cheia respectivă.Adaugă modelul în whitelist la /keys → editează cheia.
404Model inexistent în catalog sau endpoint greșit.Verifică numele exact la /models live (case sensitive).
408Timeout la provider upstream (rar).Retry cu exponential backoff, eventual model fallback.
429Rate limit local sau quota upstream.Respectă headerele Retry-After, scade concurența, sau ridică planul.
500Eroare internă gateway.Retry 1-2 cu backoff. Dacă persistă, semnalează la suport cu request_id.
502 / 503Provider upstream indisponibil temporar.Configurează fallback model (claude-sonnet ↔ gpt-5.4).
504Stream timeout (modele lente sau prompt foarte lung).Trece pe streaming SSE sau scurtează contextul.

Fiecare răspuns include header x-router-request-id. Pentru suport, trimite request_id-ul + timestamp.

Billing

Facturare MDL via e-Factura

Cum funcționează factura

  • Factură fiscală emisă lunar prin mfinante.gov.md (e-Factura).
  • Sumă în MDL, cu TVA conform legii — deductibilă pentru SRL-uri moldovenești.
  • Plată Stripe (card) sau transfer bancar IBAN MD.
  • Top-up wallet de la $5 minim, fără topup fee.
  • Operator: MEGA PROMOTING S.R.L., IDNO 1019600021765, s. Dănceni, r-l Ialoveni, MD-6814.

Detalii complete la /legal/efactura.

Help

Suport

Email

suport@megapromoting.com

Răspuns < 4h zile lucrătoare

Telegram

@megapromoting_router

Live chat tehnic, ro/ru/en

Program

Lun-Vin · 9:00-18:00

EET (Chișinău). Incidente prod 24/7 pe Enterprise.

Approfundare

Referință completă pe subiecte

15 ghiduri detaliate: quickstart, autentificare, OpenAI compatible, endpoint per endpoint, erori, rate limits, key management, billing, security și migrare de la OpenAI sau OpenRouter.

Documentație Router by MP — OpenAI compatible API | Router by Mega Promoting