Vývojářská dokumentace

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í.

API version v1Formát JSONDoprava pouze HTTPSVolný zůstatek 50 creditsOpenAPI Stáhnout schémaPostman CollectionPostman Environment

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.

  1. 1
    Vytvořte si účet

    Zaregistrujte se pouze pomocí e-mailové adresy a hesla.

  2. 2
    Ověřte svůj e-mail

    Zadejte kód odeslaný uživatelem [email protected]. Verification grants 50 free credits.

  3. 3
    Uložte si svůj API klíč

    Zkopírujte vygenerované wly_live_... klíč a ponechte jej v proměnné prostředí na straně serveru.

  4. 4
    Požádejte o test

    Zavolejte na koncový bod účtu a ověřte ověření a podívejte se na zbývající zůstatek.

Shell
curl "https://api.wordlyenglish.com/v1/account" \
  -H "Authorization: Bearer $WORDLY_API_KEY" \
  -H "Accept: application/json"
200 response
{
  "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:

Základní URLhttps://api.wordlyenglish.com/v1

Př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_key
Nevystavujte klíče API.

Nikdy 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.

ProvozNáklady na úvěrDostupnost
GET /v1/status0Živě
GET /v1/account0Živě
GET /v1/words/{word}1–5Živě
GET /v1/words/search1Živě
GET /v1/words/random1 per wordŽivě
POST /v1/words/batchNa 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.

402 response
{
  "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.

Žádost byla úspěšná
{
  "data": { ... },
  "meta": {
    "credits_used": 1,
    "request_id": "..."
  }
}
Neúspěšný požadavek
{
  "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.

Cache behavior

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.

Odkaz na koncový bod

Výrobní koncové body

GET/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" }
}
Possible results200 Service is reachable.405 Method is not GET.429 IP request limit exceeded.
GET/v1/accountLive · 0 credits

Validates the supplied key and returns the current account balance without charging a credit.

Záhlaví

JménoPovinnéPopis
AuthorizationAnoBearer wly_live_...
AcceptDoporučenoapplication/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" }
}
Possible results200 Key accepted and balance returned.401 Missing, invalid, revoked, or suspended key.429 Rate limit exceeded.

Koncové body slovní zásoby

20,000+ catalog entries are live.

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.

GET/v1/languagesLive · 0 credits

Lists all supported interface and API-message locales. Vocabulary translations are returned only when a record contains them.

Query parameters

JménoTypePovinnéRulesPopis
langstringNoSupported locale codeLanguage 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" }
}
Possible results200 Locale list returned.405 Method is not GET.429 IP request limit exceeded.
GET/v1/words/{word}Live · 1–5 credits

Returns one exact vocabulary record. Catalog and translated records cost 1 credit; enriched records cost 5 credits.

Parameters

JménoLocationTypePovinnéRules and meaning
wordPathstringAnoExact word or slug; maximum 120 characters. URL-encode special characters.
languagesQuerystringNoComma-separated translation codes, for example tr,de,fr.
langQuerystringNoHuman-readable message language; not a vocabulary filter.

Příklad žádosti

Shell
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" }
}
Possible results200 Exact record returned.401 Invalid API key.402 Insufficient credits.404 Word not found.422 Word too long.429 Rate limit exceeded.
GET/v1/words/randomLive · 1 credit per requested slot

Returns random active words for quizzes, discovery feeds, and practice sessions.

Query parameters

JménoTypePovinnéDefault / limitPopis
countintegerNo1; min 1, max 20Requested slots and credit cost.
levelstringNoExact valueLevel filter.
part_of_speech / posstringNoExact valueGrammatical-class filter.
categorystringNoExact valueCategory filter.
languagesstringNoComma-separatedTranslations 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 }
}
Possible results200 Random array returned.401 Invalid API key.402 Balance below requested count.429 Rate limit exceeded.
POST/v1/words/batchLive · calculated

Looks 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énoPovinnéValue
AuthorizationAnoBearer wly_live_...
Content-TypeAnoapplication/json
AcceptDoporučenoapplication/json

JSON body

FieldTypePovinnéRulesPopis
wordsstring[]Ano1–50 items; each max 120 charsWords to resolve; duplicates are normalized and removed.
languagesstring[]NoSupported locale codesTranslations 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" }
}
Possible results200 Ordered results.401 Invalid API key.402 Insufficient credits.413 Body over 64 KB.415 Content-Type is not JSON.422 Invalid words array.429 Rate limit exceeded.

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

FieldTypeNullablePopis
idstringNoStable URL-safe slug.
wordstringNoCanonical English word.
part_of_speechstringAnoGrammatical class.
levelstringAnoLearning difficulty or catalog level.
definitionstringAnoConcise English definition.
examplestringAnoNatural example sentence.
phoneticstringAnoPronunciation transcription when available.
translationsobject<string,string>NoLocale codes mapped to translations; may be empty.
synonymsstring[]NoAvailable synonyms.
antonymsstring[]NoAvailable antonyms.
categoriesstring[]NoLearning or semantic categories.
media.image_urlURL stringAnoLearning image URL.
media.audio_urlURL stringAnoPronunciation audio URL.
media.attributionobjectNoRequired media attribution metadata.
completenessenumNocatalog, translated, or enriched.

Meta object

FieldTypeWhen presentPopis
credits_usedintegerMetered responsesCredits charged by this request.
request_idUUID stringMetered successSupport and billing trace ID.
langstringAlwaysSelected message locale.
countintegerList responsesNumber of response items.
next_cursorstring or nullSearchNext page cursor; null means final page.

Error object

FieldTypePopis
error.codestringStable machine-readable code.
error.messagestringLocalized human-readable explanation.
error.upgrade_urlstringRelative billing URL on a 402 result.
meta.langstringError-message locale.

Chyby

HTTPkódVýznamAkce klienta
401invalid_api_keyChybějící, poškozený, odvolaný nebo neaktivní klíč.Zkontrolujte hlavičku nosiče nebo vyměňte klíč.
402credits_exhaustedNa účtu chybí kredity za operaci.Zastavte pokusy a nasměrujte zákazníka na fakturaci.
404not_foundPožadovaný koncový bod není k dispozici.Zkontrolujte cestu a verzi API.
404word_not_foundPožadovaná položka slovníku není k dispozici.Zkontrolujte pravopis nebo použijte vyhledávání.
422invalid_requestParametr nebo tělo dávky je neplatný.Před dalším pokusem opravte požadavek.
405method_not_allowedThe endpoint does not accept the HTTP method.Use the documented GET or POST method.
413payload_too_largeThe JSON request body exceeds 64 KB.Reduce the batch body.
415unsupported_media_typeThe batch request is not JSON.Send Content-Type: application/json.
429rate_limit_exceededKlíč API přesáhl 120 požadavků za minutu.Wait for Retry-After.
5xxserver_errorNeoč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, and 5xx samostatně.
  • Query GET /v1/account when your application needs the current balance.
  • Zaznamenat koncový bod, stav, latenci a request_id bez 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.

Vytvořte si bezplatný účet

Potřebujete pomoc s integrací? Email [email protected].