Adres i uwierzytelnianie
Wszystkie żądania idą na https://api.e-a-s-y.com/v1 z nagłówkiem autoryzacji. Klucz generujesz w panelu klienta (strona „API AI”).
Authorization: Bearer <TWÓJ-KLUCZ>
Base URL: https://api.e-a-s-y.com/v1
Zapytanie o dokończenie czatu
curl https://api.e-a-s-y.com/v1/chat/completions \
-H "Authorization: Bearer <TWÓJ-KLUCZ>" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-chat",
"messages": [
{"role": "system", "content": "Jesteś pomocnym asystentem."},
{"role": "user", "content": "Napisz krótki opis kawiarni."}
],
"temperature": 0.7,
"stream": false
}'
Streaming działa jak w OpenAI API — ustaw "stream": true i czytaj odpowiedź SSE strumieniowo.
Python (openai)
from openai import OpenAI
client = OpenAI(
base_url="https://api.e-a-s-y.com/v1",
api_key="<TWÓJ-KLUCZ>", # ze strony „API AI” w panelu
)
resp = client.chat.completions.create(
model="deepseek/deepseek-chat",
messages=[{"role": "user", "content": "Cześć!"}],
)
print(resp.choices[0].message.content)
JavaScript (Node, openai)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.e-a-s-y.com/v1",
apiKey: process.env.EASY_API_KEY,
});
const resp = await client.chat.completions.create({
model: "deepseek/deepseek-chat",
messages: [{ role: "user", content: "Cześć!" }],
});
console.log(resp.choices[0].message.content);
PHP (curl)
$ch = curl_init("https://api.e-a-s-y.com/v1/chat/completions");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <TWÓJ-KLUCZ>",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"model" => "deepseek/deepseek-chat",
"messages" => [["role" => "user", "content" => "Cześć!"]],
]),
]);
$resp = json_decode(curl_exec($ch), true);
echo $resp["choices"][0]["message"]["content"];
Modele
Dostępność modeli zależy od planu. Identyfikatory podajesz w polu model.
| Model | Plan | Do czego |
|---|---|---|
deepseek/deepseek-chat | wszystkie | Szybki i tani model uniwersalny — domyślny wybór |
deepseek/deepseek-reasoner | wszystkie | Zadania analityczne, rozumowanie krok po kroku |
openai/gpt-4o-mini | wszystkie | Tanie żądania OpenAI, multimodalność |
openai/gpt-4o | Pro, Max | Jakość OpenAI do zadań wymagających |
anthropic/claude-sonnet-4-5 | Pro, Max | Długie dokumenty, pisanie, kod |
anthropic/claude-opus-4-5 | Max | Najmocniejszy model — zużywa budżet najszybciej |
gemini/gemini-2.5-pro | Pro, Max | Długie konteksty Google |
Budżet i limity
Każdy plan to miesięczna koperta budżetu w dolarach (rozliczanego wg cenników dostawców modeli). DeepSeek jest najtańszy — orientacyjna liczba tokenów z planu zakłada właśnie jego. Modele premium potrafią zużyć cały budżet kilkukrotnie szybciej: Claude Opus kosztuje kilkadziesiąt razy więcej za token niż DeepSeek. Po wyczerpaniu budżetu klucz zwraca błąd do końca okresu; nowy okres startuje z kolejną płatnością subskrypcji.
Obowiązuje też limit żądań na minutę (RPM) i tokenów na minutę (TPM) — zależnie od planu, widoczne w panelu.
Kody błędów
| HTTP | Znaczenie | Co robić |
|---|---|---|
401 | Brak lub błędny klucz | Sprawdź nagłówek Authorization; wygeneruj nowy klucz w panelu |
403 | Budżet wyczerpany lub model poza planem | Zobacz zużycie w panelu; zoptymalizuj prompty albo zmień plan |
429 | Przekroczony limit RPM/TPM | Backoff i ponowna próba; ogranicz równoległość |
5xx | Błąd bramki lub dostawcy | Ponów żądanie; jeśli trwa — zgłoszenie w panelu |
Bezpieczeństwo klucza
Klucz trzymaj w zmiennych środowiskowych, nigdy w kodzie frontonu. Każde narzędzie może mieć swój własny klucz — w razie wycieku odwołujesz tylko jeden, w panelu, i generujesz nowy. Pełną wartość klucza pokazujemy tylko raz przy generowaniu.