বিকাশকারী ডকুমেন্টেশন

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 থেকে পরিবেশিত হয়:

বেস ইউআরএলhttps://api.wordlyenglish.com/v1

ব্রেকিং প্রতিক্রিয়া বা আচরণ পরিবর্তন একটি নতুন পাথ সংস্করণ ব্যবহার করবে। সংযোজন ক্ষেত্র মধ্যে চালু করা যেতে পারে v1, so clients should ignore response properties they do not recognize.

প্রমাণীকরণ

প্রমাণীকৃত এন্ডপয়েন্টের জন্য HTTP-তে একটি API কী প্রয়োজন Authorization Bearer স্কিম ব্যবহার করে হেডার।

Authorization: Bearer wly_live_your_api_key
API কী প্রকাশ করবেন না।

ব্রাউজার জাভাস্ক্রিপ্ট, পাবলিক গিট রিপোজিটরি, স্ক্রিনশট, লগ, বা বিতরণ করা মোবাইল অ্যাপ্লিকেশনে কখনই একটি লাইভ কী রাখবেন না। আপনার ব্যাকএন্ড থেকে Wordly API কল করুন এবং আপনার নিজের অ্যাপ্লিকেশনটিকে সেই ব্যাকএন্ডের সাথে যোগাযোগ করতে দিন।

স্থানীয়কৃত 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 শুধুমাত্র অনুরোধকৃত অনুবাদ ফেরত দিতে। ক্যাটালগ বা অনুবাদিত রেকর্ডের জন্য 1 ক্রেডিট খরচ হয়; সম্পূর্ণরূপে সমৃদ্ধ প্রোফাইল 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অনুপস্থিত, বিকৃত, প্রত্যাহার করা বা নিষ্ক্রিয় কী।Bearer হেডার চেক করুন বা কী প্রতিস্থাপন করুন।
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_exceededAPI কী প্রতি মিনিটে 120টি অনুরোধ অতিক্রম করেছে৷Wait for Retry-After.
5xxserver_errorএকটি অপ্রত্যাশিত সার্ভার-সাইড ব্যর্থতা৷ব্যাকঅফ দিয়ে পুনরায় চেষ্টা করুন; অবিরাম থাকলে সহায়তার সাথে যোগাযোগ করুন।

প্রস্তাবিত পুনরায় চেষ্টা নীতি

আবার চেষ্টা করবেন না 401, 402, or 404 স্বয়ংক্রিয়ভাবে ক্ষণস্থায়ী জন্য 5xx প্রতিক্রিয়া, জিটার সহ সূচকীয় ব্যাকঅফ ব্যবহার করুন এবং একটি কঠোর পুনরায় চেষ্টা করুন ক্যাপ। একটি সীমাহীন পুনঃপ্রচেষ্টা লুপ তৈরি করবেন না কারণ প্রতিটি গৃহীত প্রমাণীকৃত অনুরোধ ক্রেডিট গ্রাস করতে পারে।

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

পিএইচপি

$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 কী পাঠাবেন না। উদাহরণটি একটি বিশ্বস্ত ডার্ট ব্যাকএন্ড বা সার্ভার ফাংশনের অন্তর্গত।

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

উত্পাদন চেকলিস্ট

  • প্রক্সি ওয়ার্ডলি একটি বিশ্বস্ত ব্যাকএন্ডের মাধ্যমে অনুরোধ করে।
  • সংযোগ এবং প্রতিক্রিয়া সময়সীমা সেট করুন।
  • হ্যান্ডেল 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].