Sestavte pomocí Wordly API.
Použijte klíč API na straně serveru, provádějte požadavky HTTPS a sledujte každý hovor prostřednictvím předvídatelného modelu fakturace založeného na kreditu. Tento odkaz dokumentuje koncové body, které jsou aktuálně dostupné ve výrobě, a jasně označuje koncové body, které se teprve připravují.
Rychlý start
Vytvořte si bezplatný účet, ověřte svůj e-mail pomocí šestimístného kódu a zkopírujte klíč API zobrazený jednou na vašem vývojářském panelu.
- 1Vytvořte si účet
Zaregistrujte se pouze pomocí e-mailové adresy a hesla.
- 2Ověřte svůj e-mail
Zadejte kód odeslaný uživatelem
[email protected]. Verification grants 50 free credits. - 3Uložte si svůj API klíč
Zkopírujte vygenerované
wly_live_...klíč a ponechte jej v proměnné prostředí na straně serveru. - 4Požádejte o test
Zavolejte na koncový bod účtu a ověřte ověření a podívejte se na zbývající zůstatek.
curl "https://api.wordlyenglish.com/v1/account" \
-H "Authorization: Bearer $WORDLY_API_KEY" \
-H "Accept: application/json"{
"data": {
"message": "Authenticated",
"credits_remaining": 50
},
"meta": { "lang": "en" }
}Základní URL a verzování
Všechny produkční koncové body jsou obsluhovány z následující verze základní adresy URL:
https://api.wordlyenglish.com/v1Při porušení odezvy nebo změn chování se použije nová verze cesty. Mohou být zavedena aditivní pole v1, so clients should ignore response properties they do not recognize.
Autentizace
Ověřené koncové body vyžadují klíč API v HTTP Authorization záhlaví pomocí schématu Nosič.
Authorization: Bearer wly_live_your_api_keyNikdy neumisťujte živý klíč do JavaScriptu prohlížeče, veřejných úložišť Git, snímků obrazovky, protokolů nebo distribuované mobilní aplikace. Zavolejte Wordly API ze svého backendu a nechte svou vlastní aplikaci komunikovat s tímto backendem.
Lokalizované zprávy API
Nastavte jazyk odezvy pomocí ?lang=tr nebo standard Accept-Language záhlaví. Parametry dotazu mají přednost. Každá odpověď JSON deklaruje vybrané národní prostředí Content-Language a meta.lang. Error codes remain stable in English for programmatic handling; only the human-readable message is localized.
curl "https://api.wordlyenglish.com/v1/account?lang=tr" \
-H "Authorization: Bearer $WORDLY_API_KEY" \
-H "Accept-Language: tr-TR"Podporované kódy jazyků: en, tr, de, fr, es, it, pt, nl, pl, ru, uk, ar, fa, he, hi, bn, ur, zh, ja, ko, id, ms, vi, th, sv, no, da, fi, cs, ro.
Kredity a fakturace
Each successful metered request consumes the documented number of credits. Email-verified accounts receive 50 free credits once. Credits are deducted atomically, so concurrent requests cannot spend the same balance twice. Balance lookup through GET /v1/account is free.
| Provoz | Náklady na úvěr | Dostupnost |
|---|---|---|
GET /v1/status | 0 | Živě |
GET /v1/account | 0 | Živě |
GET /v1/words/{word} | 1–5 | Živě |
GET /v1/words/search | 1 | Živě |
GET /v1/words/random | 1 per word | Živě |
POST /v1/words/batch | Na základě vrácených záznamů | Živě |
Use GET /v1/account when you need the current balance. Other endpoint responses include the operation charge but omit the remaining balance. When the balance is insufficient, the API returns HTTP 402 a nezpracuje operaci.
{
"error": {
"code": "credits_exhausted",
"message": "Your credit balance is exhausted. Add a package or enable pay-as-you-go to continue.",
"upgrade_url": "/app.php?page=billing"
}
}API key lifecycle
Vytvořte samostatné klíče pro vývoj, přípravu a produkci. Wordly ukládá pouze kryptografický hash každého klíče; kompletní hodnota se zobrazí jednou při vytvoření.
- Pojmenujte klíče podle prostředí nebo služby.
- Použijte proměnné prostředí nebo spravované tajné úložiště.
- Okamžitě zrušte klíč, pokud mohl být odhalen.
- Otočte klíče bez opětovného použití starých hodnot.
- Neposílejte klíče v řetězcích dotazu.
Formát odpovědi
Úspěšné odpovědi používají nejvyšší úroveň data objekt a může zahrnovat a meta objekt. Chyby vždy používají nejvyšší úroveň error objekt se stabilním strojově čitelným code a lidsky čitelný message.
{
"data": { ... },
"meta": {
"credits_used": 1,
"request_id": "..."
}
}{
"error": {
"code": "invalid_api_key",
"message": "..."
}
}Udržujte request_id při kontaktování podpory ohledně úspěšného fakturovaného požadavku. JSON je kódován UTF-8 a klienti by měli odesílat Accept: application/json.
Wordly caches shared vocabulary data on the server, never API keys, account identities, balances, rate-limit state, or request identifiers. Public status and language responses advertise shared-cache lifetimes. Authenticated responses remain private, no-store; applications may cache the stable data value in their own trusted backend when appropriate.
Výrobní koncové body
/v1/statusŽivěVrátí informace o stavu veřejné služby a verzi rozhraní API. Tento koncový bod nevyžaduje ověření a stojí nulové kredity.
Příklad žádosti
curl "https://api.wordlyenglish.com/v1/status" \
-H "Accept: application/json"200 · Success
{
"data": { "status": "ok", "version": "v1" },
"meta": { "lang": "en" }
}/v1/accountLive · 0 creditsValidates the supplied key and returns the current account balance without charging a credit.
Záhlaví
| Jméno | Povinné | Popis |
|---|---|---|
Authorization | Ano | Bearer wly_live_... |
Accept | Doporučeno | application/json |
Záhlaví odpovědí
X-Credits-Remaining is returned only by this balance endpoint.
200 · Success
{
"data": { "message": "Authenticated", "credits_remaining": 1250 },
"meta": { "lang": "en" }
}Koncové body slovní zásoby
Každý záznam hlásí své completeness jako catalog, translated, or enriched. Fields that are not available are returned as null nebo prázdný objekt místo vynalezených dat.
GET /v1/words/{word}
Vrátí přesnou shodu slova. Použijte languages=tr,de,fr vrátit pouze požadované překlady. Katalog nebo přeložené záznamy stojí 1 kredit; plně obohacené profily stojí 5 kreditů.
curl "https://api.wordlyenglish.com/v1/words/water?languages=tr,de" \
-H "Authorization: Bearer $WORDLY_API_KEY"GET /v1/words/search
Hledat pomocí q a volitelné level, part_of_speech, category, limit, and cursor. Limits range from 1 to 50. Pass meta.next_cursor do další žádosti.
curl "https://api.wordlyenglish.com/v1/words/search?q=app&level=advanced&limit=20" \
-H "Authorization: Bearer $WORDLY_API_KEY"GET /v1/words/random
Vrátí 1–20 náhodných slov. Filtrovat podle level, part_of_speech, or category. Each returned slot costs one credit.
POST /v1/words/batch
V jednom požadavku vyhledá 1 až 50 jedinečných slov. Odpověď zachová pořadí požadavku a označí každou položku found.
curl -X POST "https://api.wordlyenglish.com/v1/words/batch?lang=tr" \
-H "Authorization: Bearer $WORDLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"words":["water","opportunity"],"languages":["tr","de"]}'GET /v1/languages
Vrátí všech 30 podporovaných rozhraní a národních prostředí zpráv API. Překlady slovní zásoby jsou vráceny pouze tehdy, jsou-li k dispozici. Tento koncový bod je veřejný a nestojí žádné kredity.
Limit sazby
Každý klíč API je omezen na 120 přijatých požadavků za klouzavou minutu. Odpovědi zahrnují X-RateLimit-Limit a X-RateLimit-Remaining. A 429 rate_limit_exceeded odpověď zahrnuje Retry-After: 60.
/v1/languagesLive · 0 creditsLists all supported interface and API-message locales. Vocabulary translations are returned only when a record contains them.
Query parameters
| Jméno | Type | Povinné | Rules | Popis |
|---|---|---|---|---|
lang | string | No | Supported locale code | Language for human-readable messages. |
Příklad žádosti
curl "https://api.wordlyenglish.com/v1/languages?lang=tr"200 · Success
{
"data": [{
"code": "tr",
"name": "Türkçe",
"message_localization": true,
"vocabulary_translation": "when_available"
}],
"meta": { "count": 30, "lang": "tr" }
}/v1/words/{word}Live · 1–5 creditsReturns one exact vocabulary record. Catalog and translated records cost 1 credit; enriched records cost 5 credits.
Parameters
| Jméno | Location | Type | Povinné | Rules and meaning |
|---|---|---|---|---|
word | Path | string | Ano | Exact word or slug; maximum 120 characters. URL-encode special characters. |
languages | Query | string | No | Comma-separated translation codes, for example tr,de,fr. |
lang | Query | string | No | Human-readable message language; not a vocabulary filter. |
Příklad žádosti
curl "https://api.wordlyenglish.com/v1/words/water?languages=tr,de" \
-H "Authorization: Bearer $WORDLY_API_KEY" \
-H "Accept: application/json"200 · Success
{
"data": {
"id": "water",
"word": "water",
"part_of_speech": "noun",
"level": "basic",
"definition": "A clear liquid essential for life.",
"example": "Please drink enough water every day.",
"translations": { "tr": "su", "de": "Wasser" },
"categories": ["nature", "daily-life"],
"media": {
"image_url": "https://media.example/water.webp",
"audio_url": "https://media.example/water.mp3",
"attribution": {}
},
"completeness": "enriched"
},
"meta": {
"credits_used": 5,
"request_id": "5ebac760-cdc5-4a73-a87b-22463d81483c",
"lang": "en"
}
}404 · Word unavailable
{
"error": { "code": "word_not_found", "message": "The requested word was not found." },
"meta": { "lang": "en" }
}/v1/words/searchŽivě · 1 kreditSearches active vocabulary in alphabetical order. Use the returned cursor for stable forward pagination.
Query parameters
| Jméno | Type | Povinné | Default / limit | Popis |
|---|---|---|---|---|
q | string | No | Max 120 chars | Case-insensitive contained text. |
level | string | No | Max 30 chars | Exact level filter. |
part_of_speech / pos | string | No | Max 40 chars | Exact grammatical-class filter. |
category | string | No | Max 80 chars | Category-array filter. |
limit | integer | No | 20; min 1, max 50 | Maximum returned records. |
cursor | string | No | Max 120 chars | Previous meta.next_cursor. |
languages | string | No | Comma-separated | Translations to include. |
Příklad žádosti
curl "https://api.wordlyenglish.com/v1/words/search?q=app&level=advanced&languages=tr&limit=2" \
-H "Authorization: Bearer $WORDLY_API_KEY"200 · Success
{
"data": [{
"id": "application",
"word": "application",
"part_of_speech": "noun",
"level": "advanced",
"definition": null,
"example": null,
"translations": { "tr": "uygulama" },
"categories": [],
"media": { "image_url": null, "audio_url": null, "attribution": {} },
"completeness": "translated"
}],
"meta": { "credits_used": 1, "request_id": "...", "lang": "en", "count": 1, "next_cursor": null }
}/v1/words/randomLive · 1 credit per requested slotReturns random active words for quizzes, discovery feeds, and practice sessions.
Query parameters
| Jméno | Type | Povinné | Default / limit | Popis |
|---|---|---|---|---|
count | integer | No | 1; min 1, max 20 | Requested slots and credit cost. |
level | string | No | Exact value | Level filter. |
part_of_speech / pos | string | No | Exact value | Grammatical-class filter. |
category | string | No | Exact value | Category filter. |
languages | string | No | Comma-separated | Translations to include. |
Příklad žádosti
curl "https://api.wordlyenglish.com/v1/words/random?count=3&level=basic&languages=tr" \
-H "Authorization: Bearer $WORDLY_API_KEY"200 · Success
{
"data": [{ "id": "water", "word": "water", "part_of_speech": "noun", "level": "basic", "definition": null, "example": null, "translations": { "tr": "su" }, "categories": [], "media": { "image_url": null, "audio_url": null, "attribution": {} }, "completeness": "translated" }],
"meta": { "credits_used": 3, "request_id": "...", "lang": "en", "count": 1 }
}/v1/words/batchLive · calculatedLooks up 1–50 unique words while preserving request order. Each enriched result costs 5 credits, another found result costs 1, and the minimum request charge is 1.
Záhlaví
| Jméno | Povinné | Value |
|---|---|---|
Authorization | Ano | Bearer wly_live_... |
Content-Type | Ano | application/json |
Accept | Doporučeno | application/json |
JSON body
| Field | Type | Povinné | Rules | Popis |
|---|---|---|---|---|
words | string[] | Ano | 1–50 items; each max 120 chars | Words to resolve; duplicates are normalized and removed. |
languages | string[] | No | Supported locale codes | Translations to include. |
Příklad žádosti
curl -X POST "https://api.wordlyenglish.com/v1/words/batch?lang=tr" \
-H "Authorization: Bearer $WORDLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"words":["water","not-a-word"],"languages":["tr","de"]}'200 · Success
{
"data": [
{ "query": "water", "found": true, "word": { "id": "water", "word": "water", "part_of_speech": "noun", "level": "basic", "definition": null, "example": null, "translations": { "tr": "su", "de": "Wasser" }, "categories": [], "media": { "image_url": null, "audio_url": null, "attribution": {} }, "completeness": "translated" } },
{ "query": "not-a-word", "found": false, "word": null }
],
"meta": { "credits_used": 1, "request_id": "...", "lang": "tr", "count": 2 }
}422 · Invalid body
{
"error": { "code": "invalid_request", "message": "Provide between 1 and 50 words." },
"meta": { "lang": "en" }
}Response field reference
Every stable response variable is described below. Additive fields may appear later, so clients should ignore fields they do not recognize.
Vocabulary object
| Field | Type | Nullable | Popis |
|---|---|---|---|
id | string | No | Stable URL-safe slug. |
word | string | No | Canonical English word. |
part_of_speech | string | Ano | Grammatical class. |
level | string | Ano | Learning difficulty or catalog level. |
definition | string | Ano | Concise English definition. |
example | string | Ano | Natural example sentence. |
phonetic | string | Ano | Pronunciation transcription when available. |
translations | object<string,string> | No | Locale codes mapped to translations; may be empty. |
synonyms | string[] | No | Available synonyms. |
antonyms | string[] | No | Available antonyms. |
categories | string[] | No | Learning or semantic categories. |
media.image_url | URL string | Ano | Learning image URL. |
media.audio_url | URL string | Ano | Pronunciation audio URL. |
media.attribution | object | No | Required media attribution metadata. |
completeness | enum | No | catalog, translated, or enriched. |
Meta object
| Field | Type | When present | Popis |
|---|---|---|---|
credits_used | integer | Metered responses | Credits charged by this request. |
request_id | UUID string | Metered success | Support and billing trace ID. |
lang | string | Always | Selected message locale. |
count | integer | List responses | Number of response items. |
next_cursor | string or null | Search | Next page cursor; null means final page. |
Error object
| Field | Type | Popis |
|---|---|---|
error.code | string | Stable machine-readable code. |
error.message | string | Localized human-readable explanation. |
error.upgrade_url | string | Relative billing URL on a 402 result. |
meta.lang | string | Error-message locale. |
Chyby
| HTTP | kód | Význam | Akce klienta |
|---|---|---|---|
| 401 | invalid_api_key | Chybějící, poškozený, odvolaný nebo neaktivní klíč. | Zkontrolujte hlavičku nosiče nebo vyměňte klíč. |
| 402 | credits_exhausted | Na účtu chybí kredity za operaci. | Zastavte pokusy a nasměrujte zákazníka na fakturaci. |
| 404 | not_found | Požadovaný koncový bod není k dispozici. | Zkontrolujte cestu a verzi API. |
| 404 | word_not_found | Požadovaná položka slovníku není k dispozici. | Zkontrolujte pravopis nebo použijte vyhledávání. |
| 422 | invalid_request | Parametr nebo tělo dávky je neplatný. | Před dalším pokusem opravte požadavek. |
| 405 | method_not_allowed | The endpoint does not accept the HTTP method. | Use the documented GET or POST method. |
| 413 | payload_too_large | The JSON request body exceeds 64 KB. | Reduce the batch body. |
| 415 | unsupported_media_type | The batch request is not JSON. | Send Content-Type: application/json. |
| 429 | rate_limit_exceeded | Klíč API přesáhl 120 požadavků za minutu. | Wait for Retry-After. |
| 5xx | server_error | Neočekávané selhání na straně serveru. | Opakujte pokus s couvnutím; pokud přetrvává, kontaktujte podporu. |
Doporučené zásady opakování
Nezkoušejte to znovu 401, 402, or 404 automaticky. Pro přechodné 5xx odpovědi, použijte exponenciální ústup s jitterem a přísným omezením opakování. Nikdy nevytvářejte neomezenou smyčku opakování, protože každý přijatý ověřený požadavek může spotřebovat kredity.
JavaScript / Node.js
const response = await fetch('https://api.wordlyenglish.com/v1/account', {
headers: {
Authorization: `Bearer ${process.env.WORDLY_API_KEY}`,
Accept: 'application/json'
}
});
const body = await response.json();
if (!response.ok) {
throw new Error(`${body.error.code}: ${body.error.message}`);
}
console.log(body.data.credits_remaining);Python
import os
import requests
response = requests.get(
'https://api.wordlyenglish.com/v1/account',
headers={
'Authorization': f'Bearer {os.environ["WORDLY_API_KEY"]}',
'Accept': 'application/json',
},
timeout=15,
)
response.raise_for_status()
print(response.json()['data']['credits_remaining'])PHP
$curl = curl_init('https://api.wordlyenglish.com/v1/account');
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('WORDLY_API_KEY'),
'Accept: application/json',
],
]);
$body = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
if ($status >= 400) {
throw new RuntimeException('Wordly API request failed');
}
$data = json_decode($body, true, flags: JSON_THROW_ON_ERROR);Šipka / Flutter
Nezasílejte klíč Wordly uvnitř aplikace Flutter. Příklad patří do důvěryhodného backendu nebo funkce serveru Dart.
final response = await http.get(
Uri.parse('https://api.wordlyenglish.com/v1/account'),
headers: {
'Authorization': 'Bearer ${Platform.environment['WORDLY_API_KEY']}',
'Accept': 'application/json',
},
);
final body = jsonDecode(response.body) as Map<String, dynamic>;
if (response.statusCode >= 400) {
throw Exception((body['error'] as Map)['code']);
}Kontrolní seznam výroby
- Proxy Wordly požadavky prostřednictvím důvěryhodného backendu.
- Nastavte časové limity připojení a odezvy.
- Rukojeť
401,402,404, and5xxsamostatně. - Query
GET /v1/accountwhen your application needs the current balance. - Zaznamenat koncový bod, stav, latenci a
request_idbez přihlášení klíče API. - Používejte samostatné klíče pro každé prostředí a pravidelně je střídejte.
- Cache stable vocabulary responses in your backend when appropriate.
Jste připraveni podat první žádost?
Vytvořte si účet, ověřte svůj e-mail a získejte 50 kreditů zdarma.
Potřebujete pomoc s integrací? Email [email protected].