בנה עם Wordly API.
השתמש במפתח API בצד השרת, בצע בקשות HTTPS ועקוב אחר כל שיחה באמצעות מודל חיוב מבוסס אשראי צפוי. הפניה זו מתעדת את נקודות הקצה הזמינות כיום בייצור ומסמנת בבירור נקודות קצה שעדיין מוכנות.
התחלה מהירה
צור חשבון בחינם, אמת את הדוא"ל שלך באמצעות הקוד בן שש הספרות, והעתק את מפתח ה-API המוצג פעם אחת בלוח המחוונים למפתחים שלך.
- 1צור חשבון
הרשמה רק עם כתובת אימייל וסיסמה.
- 2אמת את האימייל שלך
הזן את הקוד שנשלח על ידי
[email protected]. Verification grants 50 free credits. - 3אחסן את מפתח ה-API שלך
העתק את שנוצר
wly_live_...מפתח ולשמור אותו במשתנה סביבה בצד השרת. - 4הגש בקשה לבדיקה
התקשר לנקודת הקצה של החשבון כדי לאמת את האימות ולראות את היתרה הנותרת.
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" }
}כתובת 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לעולם אל תציב מפתח חי ב-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/status | 0 | חי |
GET /v1/account | 0 | חי |
GET /v1/words/{word} | 1–5 | חי |
GET /v1/words/search | 1 | חי |
GET /v1/words/random | 1 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 ואינו מעבד את הפעולה.
{
"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.
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" }
}/v1/accountLive · 0 creditsValidates 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" }
}נקודות קצה של אוצר המילים
כל רשומה מדווחת על שלה 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 creditsLists all supported interface and API-message locales. Vocabulary translations are returned only when a record contains them.
Query parameters
| שם | Type | חובה | Rules | תיאור |
|---|---|---|---|---|
lang | string | No | Supported locale code | Language 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" }
}/v1/words/{word}Live · 1–5 creditsReturns one exact vocabulary record. Catalog and translated records cost 1 credit; enriched records cost 5 credits.
Parameters
| שם | Location | Type | חובה | Rules and meaning |
|---|---|---|---|---|
word | Path | string | כן | 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. |
בקשה לדוגמה
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חי · 1 קרדיטSearches active vocabulary in alphabetical order. Use the returned cursor for stable forward pagination.
Query parameters
| שם | Type | חובה | Default / limit | תיאור |
|---|---|---|---|---|
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. |
בקשה לדוגמה
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
| שם | Type | חובה | Default / limit | תיאור |
|---|---|---|---|---|
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. |
בקשה לדוגמה
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.
כותרות
| שם | חובה | Value |
|---|---|---|
Authorization | כן | Bearer wly_live_... |
Content-Type | כן | application/json |
Accept | מומלץ | application/json |
JSON body
| Field | Type | חובה | Rules | תיאור |
|---|---|---|---|---|
words | string[] | כן | 1–50 items; each max 120 chars | Words to resolve; duplicates are normalized and removed. |
languages | string[] | No | Supported locale codes | Translations 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" }
}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 | תיאור |
|---|---|---|---|
id | string | No | Stable URL-safe slug. |
word | string | No | Canonical English word. |
part_of_speech | string | כן | Grammatical class. |
level | string | כן | Learning difficulty or catalog level. |
definition | string | כן | Concise English definition. |
example | string | כן | Natural example sentence. |
phonetic | string | כן | 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 | כן | Learning image URL. |
media.audio_url | URL string | כן | Pronunciation audio URL. |
media.attribution | object | No | Required media attribution metadata. |
completeness | enum | No | catalog, translated, or enriched. |
Meta object
| Field | Type | When present | תיאור |
|---|---|---|---|
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 | תיאור |
|---|---|---|
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. |
שגיאות
| HTTP | קוד | משמעות | פעולת הלקוח |
|---|---|---|---|
| 401 | invalid_api_key | מפתח חסר, פגום, בוטל או לא פעיל. | בדוק את כותרת הנושא או החלף את המפתח. |
| 402 | credits_exhausted | בחשבון חסרים זיכויים עבור הפעולה. | עצור ניסיונות חוזרים והפנה את הלקוח לחיוב. |
| 404 | not_found | נקודת הקצה המבוקשת אינה זמינה. | בדוק את הנתיב ואת גרסת ה-API. |
| 404 | word_not_found | ערך אוצר המילים המבוקש אינו זמין. | בדוק איות או השתמש בחיפוש. |
| 422 | invalid_request | פרמטר או גוף אצווה אינם חוקיים. | תקן את הבקשה לפני שתנסה שוב. |
| 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 | מפתח ה-API עלה על 120 בקשות לדקה. | Wait for Retry-After. |
| 5xx | server_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, and5xxבנפרד. - Query
GET /v1/accountwhen your application needs the current balance. - יומן נקודת קצה, סטטוס, זמן אחזור ו
request_idמבלי לרשום את מפתח ה-API. - השתמש במפתחות נפרדים לכל סביבה וסובב אותם מעת לעת.
- Cache stable vocabulary responses in your backend when appropriate.
מוכן להגיש את הבקשה הראשונה שלך?
צור חשבון, אמת את האימייל שלך וקבל 50 זיכויים בחינם.
צריכים עזרה באינטגרציה? דוא"ל [email protected].