תיעוד מפתחים

בנה עם Wordly API.

השתמש במפתח API בצד השרת, בצע בקשות HTTPS ועקוב אחר כל שיחה באמצעות מודל חיוב מבוסס אשראי צפוי. הפניה זו מתעדת את נקודות הקצה הזמינות כיום בייצור ומסמנת בבירור נקודות קצה שעדיין מוכנות.

API version v1פורמט JSONהובלה HTTPS בלבדאיזון חינם 50 creditsOpenAPI הורד סכימהPostman CollectionPostman Environment

התחלה מהירה

צור חשבון בחינם, אמת את הדוא"ל שלך באמצעות הקוד בן שש הספרות, והעתק את מפתח ה-API המוצג פעם אחת בלוח המחוונים למפתחים שלך.

  1. 1
    צור חשבון

    הרשמה רק עם כתובת אימייל וסיסמה.

  2. 2
    אמת את האימייל שלך

    הזן את הקוד שנשלח על ידי [email protected]. Verification grants 50 free credits.

  3. 3
    אחסן את מפתח ה-API שלך

    העתק את שנוצר wly_live_... מפתח ולשמור אותו במשתנה סביבה בצד השרת.

  4. 4
    הגש בקשה לבדיקה

    התקשר לנקודת הקצה של החשבון כדי לאמת את האימות ולראות את היתרה הנותרת.

מעטפת
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" }
}

כתובת URL בסיסית וניהול גרסאות

כל נקודות הקצה הייצור מוגשות מכתובת ה-URL הבסיסית המנוסחת הבאה:

כתובת האתר הבסיסיתhttps://api.wordlyenglish.com/v1

תגובת שבירה או שינויים בהתנהגות ישתמשו בגרסת נתיב חדשה. ניתן להכניס בתוכם שדות תוספים v1, so clients should ignore response properties they do not recognize.

אימות

נקודות קצה מאומתות דורשות מפתח API ב-HTTP Authorization כותרת באמצעות ערכת ה-Bearer.

Authorization: Bearer wly_live_your_api_key
אל תחשוף מפתחות API.

לעולם אל תציב מפתח חי ב-JavaScript של הדפדפן, במאגרי Git ציבוריים, בצילומי מסך, ביומנים או באפליקציה מבוזרת לנייד. התקשר ל-Wordly API מה-backend שלך ואפשר לאפליקציה שלך לתקשר עם ה-backend הזה.

הודעות API מקומיות

הגדר את שפת התגובה עם ?lang=tr או התקן Accept-Language כותרת. פרמטרי שאילתה מקבלים עדיפות. כל תגובת JSON מצהירה על המקום שנבחר בו Content-Language ו 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"

קודי שפה נתמכים: 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.

זיכויים וחיובים

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.

מבצעעלות אשראיזמינות
GET /v1/status0חי
GET /v1/account0חי
GET /v1/words/{word}1–5חי
GET /v1/words/search1חי
GET /v1/words/random1 per wordחי
POST /v1/words/batchמבוסס על רשומות שהוחזרוחי

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 ואינו מעבד את הפעולה.

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

צור מפתחות נפרדים לפיתוח, הבמה והפקה. Wordly מאחסן רק גיבוב קריפטוגרפי של כל מפתח; הערך המלא מוצג פעם אחת בעת היצירה.

  • תן שם למפתחות לפי סביבה או שירות.
  • השתמש במשתני סביבה או בחנות סודית מנוהלת.
  • שללו מפתח באופן מיידי אם ייתכן שהוא נחשף.
  • סובב מקשים מבלי לעשות שימוש חוזר בערכים ישנים.
  • אל תשלח מפתחות במחרוזות שאילתות.

פורמט תגובה

תגובות מוצלחות משתמשות ברמה עליונה data חפץ ויכול לכלול א meta חפץ. שגיאות תמיד משתמשות ברמה העליונה error אובייקט עם קריא מכונה יציב code וקריאה לאדם message.

בקשה מוצלחת
{
  "data": { ... },
  "meta": {
    "credits_used": 1,
    "request_id": "..."
  }
}
בקשה נכשלה
{
  "error": {
    "code": "invalid_api_key",
    "message": "..."
  }
}

שמור את request_id בעת יצירת קשר עם התמיכה לגבי בקשת חיוב מוצלחת. JSON מקודד UTF-8 ולקוחות צריכים לשלוח 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.

הפניה לנקודת קצה

נקודות קצה לייצור

קבל/v1/statusחי

מחזיר מידע על בריאות השירות הציבורי וגרסת ה-API. נקודת קצה זו אינה דורשת אימות ועולה אפס זיכויים.

בקשה לדוגמה

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.
קבל/v1/accountLive · 0 credits

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

כותרות

שםחובהתיאור
AuthorizationכןBearer wly_live_...
Acceptמומלץapplication/json

כותרות תגובה

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.

נקודות קצה של אוצר המילים

20,000+ catalog entries are live.

כל רשומה מדווחת על שלה completeness כמו catalog, translated, or enriched. Fields that are not available are returned as null או חפץ ריק במקום נתונים מומצאים.

GET /v1/words/{word}

מחזירה התאמה מדויקת של מילה. השתמש languages=tr,de,fr להחזיר רק תרגומים מבוקשים. רשומות קטלוגיות או מתורגמות עולות זיכוי אחד; פרופילים מועשרים לחלוטין עולים 5 קרדיטים.

curl "https://api.wordlyenglish.com/v1/words/water?languages=tr,de" \
  -H "Authorization: Bearer $WORDLY_API_KEY"

GET /v1/words/search

חפש עם q ואופציונלי level, part_of_speech, category, limit, and cursor. Limits range from 1 to 50. Pass meta.next_cursor לבקשה הבאה.

curl "https://api.wordlyenglish.com/v1/words/search?q=app&level=advanced&limit=20" \
  -H "Authorization: Bearer $WORDLY_API_KEY"

GET /v1/words/random

מחזירה 1-20 מילים אקראיות. סנן לפי level, part_of_speech, or category. Each returned slot costs one credit.

POST /v1/words/batch

מחפש בין 1 ל-50 מילים ייחודיות בבקשה אחת. התגובה שומרת על סדר הבקשה ומסמנת כל פריט 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

מחזירה את כל 30 הממשקים הנתמכים ו-API-הודעות מקומיות. תרגומי אוצר מילים מוחזרים רק כאשר הם זמינים. נקודת קצה זו ציבורית ועולה אפס זיכויים.

מגבלת תעריף

כל מפתח API מוגבל ל-120 בקשות מקובלות לדקה מתגלגלת. התגובות כוללות X-RateLimit-Limit ו X-RateLimit-Remaining. A 429 rate_limit_exceeded התגובה כוללת Retry-After: 60.

קבל/v1/languagesLive · 0 credits

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

Query parameters

שםTypeחובהRulesתיאור
langstringNoSupported locale codeLanguage for human-readable messages.

בקשה לדוגמה

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.
קבל/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

שםLocationTypeחובהRules and meaning
wordPathstringכןExact 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.

בקשה לדוגמה

מעטפת
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.
קבל/v1/words/randomLive · 1 credit per requested slot

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

Query parameters

שםTypeחובהDefault / limitתיאור
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.

בקשה לדוגמה

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.

כותרות

שםחובהValue
AuthorizationכןBearer wly_live_...
Content-Typeכןapplication/json
Acceptמומלץapplication/json

JSON body

FieldTypeחובהRulesתיאור
wordsstring[]כן1–50 items; each max 120 charsWords to resolve; duplicates are normalized and removed.
languagesstring[]NoSupported locale codesTranslations to include.

בקשה לדוגמה

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

FieldTypeNullableתיאור
idstringNoStable URL-safe slug.
wordstringNoCanonical English word.
part_of_speechstringכןGrammatical class.
levelstringכןLearning difficulty or catalog level.
definitionstringכןConcise English definition.
examplestringכןNatural example sentence.
phoneticstringכןPronunciation 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 stringכןLearning image URL.
media.audio_urlURL stringכןPronunciation audio URL.
media.attributionobjectNoRequired media attribution metadata.
completenessenumNocatalog, translated, or enriched.

Meta object

FieldTypeWhen presentתיאור
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

FieldTypeתיאור
error.codestringStable machine-readable code.
error.messagestringLocalized human-readable explanation.
error.upgrade_urlstringRelative billing URL on a 402 result.
meta.langstringError-message locale.

שגיאות

HTTPקודמשמעותפעולת הלקוח
401invalid_api_keyמפתח חסר, פגום, בוטל או לא פעיל.בדוק את כותרת הנושא או החלף את המפתח.
402credits_exhaustedבחשבון חסרים זיכויים עבור הפעולה.עצור ניסיונות חוזרים והפנה את הלקוח לחיוב.
404not_foundנקודת הקצה המבוקשת אינה זמינה.בדוק את הנתיב ואת גרסת ה-API.
404word_not_foundערך אוצר המילים המבוקש אינו זמין.בדוק איות או השתמש בחיפוש.
422invalid_requestפרמטר או גוף אצווה אינם חוקיים.תקן את הבקשה לפני שתנסה שוב.
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_exceededמפתח ה-API עלה על 120 בקשות לדקה.Wait for Retry-After.
5xxserver_errorכשל בלתי צפוי בצד השרת.נסה שוב עם גיבוי; צור קשר עם התמיכה אם מתמשך.

מדיניות ניסיון חוזר מומלצת

אל תנסה שוב 401, 402, or 404 באופן אוטומטי. לחולפים 5xx תגובות, השתמש ב-backoff אקספוננציאלי עם ריצוד ומכסה קפדנית של ניסיון חוזר. לעולם אל תיצור לולאת ניסיון חוזר ללא גבולות מכיוון שכל בקשה מאומתת מקובלת עשויה לצרוך קרדיטים.

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);

פייתון

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);

חץ / רפרוף

אל תשלח את מפתח Wordly בתוך אפליקציית Flutter. הדוגמה שייכת ל-Dart backend או שרת מהימן.

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']);
}

רשימת תיוג ייצור

  • בקשות פרוקסי של Wordly דרך קצה אחורי מהימן.
  • הגדר תפוגה של חיבור ותגובה.
  • ידית 401, 402, 404, and 5xx בנפרד.
  • Query GET /v1/account when your application needs the current balance.
  • יומן נקודת קצה, סטטוס, זמן אחזור ו request_id מבלי לרשום את מפתח ה-API.
  • השתמש במפתחות נפרדים לכל סביבה וסובב אותם מעת לעת.
  • Cache stable vocabulary responses in your backend when appropriate.

מוכן להגיש את הבקשה הראשונה שלך?

צור חשבון, אמת את האימייל שלך וקבל 50 זיכויים בחינם.

צור חשבון בחינם

צריכים עזרה באינטגרציה? דוא"ל [email protected].