Skip to content
ভাষা: বাংলা

ডেভেলপারদের জন্য API

API ত্রুটির ফরম্যাট ও ত্রুটি কোড

হালনাগাদ ১ নভেম্বর, ২০২৬ 5 মিনিটে পড়া

LinkHarbor API-এর ত্রুটির রেসপন্স কীভাবে গঠিত, সবচেয়ে গুরুত্বপূর্ণ ত্রুটি কোডের মানে কী আর আপনার কোড সেগুলোতে কীভাবে সাড়া দেবে।

API-এর প্রতিটি ত্রুটির রেসপন্সের ফরম্যাট একই। আপনার কোড error ফিল্ডের ত্রুটি কোডের ওপর নির্ভর করবে, message-এর লেখার ওপর নয় – কোড স্থির থাকে, কিন্তু লেখা বদলাতে পারে এবং অ্যাকাউন্টের ভাষায় অনুবাদ হয়।

ত্রুটির রেসপন্সের গঠন

উদাহরণ: 422 validation_failed
{
  "error": "validation_failed",
  "message": "Some of the information provided is invalid. Please check and try again.",
  "details": [
    { "field": "title", "reason": "minLength", "message": "…" }
  ],
  "request_id": "6b1f0c2e-…"
}
error
মেশিনে পড়ার উপযোগী কোড, যেমন not_found। বেশিরভাগ ত্রুটিতে এটি X-Error-Code হেডারেও থাকে – তবে বডির ফিল্ডের ওপরই নির্ভর করুন।
message
মানুষের পড়ার মতো বিবরণ, অ্যাকাউন্টের ভাষায়: API কী দিয়ে হলে ওয়ার্কস্পেসের মালিকের ভাষা, সংযুক্ত অ্যাপ দিয়ে হলে যিনি অ্যাপটি সংযুক্ত করেছেন তাঁর ভাষা। বৈধ টোকেন না থাকলে – যেমন টোকেন যাচাই থেকে আসা 401-এ – ভাষা Accept-Language অনুসরণ করে, নইলে ইংরেজি। Content-Language হেডার জানায় কোন ভাষা ব্যবহার হয়েছে।
details
শুধু তখনই থাকে যখন আরও কিছু বলার আছে। ইনপুট যাচাই থেকে আসা 422-এ প্রতিটি সমস্যার জন্য field, reason আর message সহ একটি তালিকা; বিজনেস লজিক থেকে আসা 422 আর অন্য সব ত্রুটিতে একটি অবজেক্ট, যেমন reason, retry_after_sec বা সমস্যার একটি তালিকাসহ। কোনো আকার ছাড়িয়ে গেলে এতে field, reason আর limit থাকে, আর 413 request_too_large-এ max_bytes আর max_kb। তাই details একটি তালিকা কি না তা যাচাই করুন।
request_id
রিকোয়েস্টের আইডি। এটি X-Request-Id হেডারেও থাকে। সাপোর্টে যোগাযোগ করলে এটি জানান।

ব্যতিক্রম: 429 rate_limited রেসপন্সে details-এর বদলে retry_after_sec ফিল্ড থাকে; 429 আর 403 insufficient_scope-এ বডিতে request_id থাকে না। টোকেন যাচাই থেকে আসা 401 আর স্কিমা যাচাই থেকে আসা 422-এ কোনো X-Error-Code হেডার থাকে না, আর স্কিমা যাচাইয়ে শুধু ওপরের স্তরের message অনুবাদ হয়, details-এর ভেতরের লেখা ইংরেজিতেই থাকে। X-Request-Id হেডার সবসময় সেট করা থাকে।

সবচেয়ে গুরুত্বপূর্ণ কোড

HTTPerrorঅর্থকী করবেন
400invalid_jsonবডি বৈধ JSON নয়JSON যাচাই করুন
400bad_requestভুল Content-Type বা ত্রুটিপূর্ণ রিকোয়েস্টContent-Type: application/json সেট করুন
401missing_bearer_tokenAuthorization হেডারে কোনো টোকেন নেইAuthorization: Bearer … হেডার সেট করুন
401invalid_tokenটোকেনের মেয়াদ শেষ বা অবৈধ, অথবা কী মুছে ফেলা হয়েছেনতুন টোকেন নিন; তাতে কাজ না হলে কী যাচাই করুন
401invalid_api_keyটোকেন বদলের সময় ভুল কী আইডি বা সিক্রেটক্রেডেনশিয়াল যাচাই করুন
402plan_limit_reachedপ্ল্যানের সীমায় পৌঁছেছেন, যেমন শর্ট লিংকের ক্ষেত্রেআপগ্রেড করুন বা এন্ট্রি মুছুন
403insufficient_scopeস্কোপ নেই বা এন্ডপয়েন্ট API কী-এর জন্য চালু নয়সঠিক স্কোপসহ একটি কী তৈরি করুন
403forbiddenএই কাজের অনুমতি নেইড্যাশবোর্ডে করুন
403feature_not_availableফিচারটি প্ল্যানে অন্তর্ভুক্ত নয়প্ল্যান যাচাই করুন
403block_type_requires_planব্লকের ধরনটি শুধু উচ্চতর প্ল্যানে পাওয়া যায়অন্য ব্লকের ধরন বেছে নিন বা আপগ্রেড করুন
403template_lockedপ্রিমিয়াম টেমপ্লেট বর্তমান প্ল্যানে পাওয়া যায় নাGET /v1/templates/available থেকে একটি টেমপ্লেট বেছে নিন
403workspace_suspended, workspace_read_only, workspace_grace_expiredবকেয়া পেমেন্টের কারণে ওয়ার্কস্পেস লক বা শুধু পড়ার জন্য খোলাড্যাশবোর্ডে পেমেন্টের বিষয়টি মিটিয়ে নিন
404not_foundরিসোর্সটি নেই বা আপনার ওয়ার্কস্পেসের নয়আইডি যাচাই করুন
409conflictবর্তমান অবস্থার সাথে সাধারণ সংঘাতঅবস্থা আবার লোড করুন, ইনপুট বদলান
409workspace_template_in_useওয়ার্কস্পেস টেমপ্লেট এখনো পেজে ব্যবহৃত হচ্ছে; সংখ্যাটি details.count-এপেজগুলো অন্য টেমপ্লেটে সরান, তারপর মুছুন
409handle_taken, slug_takenহ্যান্ডেল বা শর্ট লিংকের স্লাগ আগেই নেওয়া হয়েছেঅন্য মান বেছে নিন
409form_in_use, page_not_private, page_not_published, never_publishedঅবস্থার সাথে সংঘাত: ফর্ম এখনো কোনো পেজে আছে, পেজ প্রাইভেট নয় বা পাবলিশড নয়, কখনো পাবলিশ হয়নিঅবস্থা বদলান, তারপর আবার চেষ্টা করুন
409page_limit_reached, link_limit_reached, block_limit_reached, form_limit_reached, asset_limit_reached, asset_storage_limit_reached, workspace_template_limit_reachedপ্ল্যানের সংখ্যা বা স্টোরেজ সীমায় পৌঁছেছেনএন্ট্রি সরান বা আপগ্রেড করুন
409draft_not_publishableখসড়ায় সমস্যা আছে; তালিকাটি details.issues-এসমস্যাগুলো ঠিক করুন, তারপর আবার পাবলিশ করুন
413request_too_largeবডি এই এন্ডপয়েন্টের অনুমোদিত আকারের চেয়ে বড় (৬৪ KB, ১ MB বা ২ MB); সীমাটি details.max_kb-এপ্রতি রিকোয়েস্টে কম ডেটা পাঠান, দেখুন রেট লিমিট
413payload_too_largeআপলোড করা ফাইল ১০ MB-এর চেয়ে বড়ফাইলটি ছোট করুন
422validation_failedঅবৈধ ইনপুট বা অজানা ফিল্ড; বিস্তারিত details-এdetails-এ যেমন বলা আছে সেভাবে ফিল্ডগুলো ঠিক করুন
422handle_reserved, target_url_invalid, target_url_scheme, target_url_hostহ্যান্ডেল সংরক্ষিত, অথবা টার্গেট URL অবৈধ বা অনুমোদিত নয়অন্য মান বেছে নিন
422workspace_template_disabledবাছাই করা ওয়ার্কস্পেস টেমপ্লেট নিষ্ক্রিয়“ডোমেইন ও টেমপ্লেট”-এ টেমপ্লেটটি সক্রিয় করুন বা অন্য একটি বেছে নিন
422template_css_external, template_section_invalidওয়ার্কস্পেস টেমপ্লেট: CSS বাইরের সার্ভার থেকে লোড করে, অথবা কোনো {{#if}}/{{#unless}}/{{#each}} সেকশন ভুল জায়গায় বসানোবাইরের ঠিকানা সরান, অথবা সেকশনটি একই ট্যাগ বা টেক্সটের মধ্যেই বন্ধ করুন
422custom_css_externalকাস্টম CSS বাইরের সার্ভার থেকে কিছু লোড করেCSS থেকে বাইরের ঠিকানা সরান
429rate_limited, api_key_lockedঅনেক বেশি রিকোয়েস্ট, অথবা ব্যর্থ চেষ্টার পর কী লকRetry-After বা details.retry_after_sec যতক্ষণ বলে ততক্ষণ অপেক্ষা করুন
500internal_errorঅপ্রত্যাশিত ত্রুটিপরে আবার চেষ্টা করুন, request_id লিখে রাখুন
503service_unavailableসার্ভিস সাময়িকভাবে পাওয়া যাচ্ছে নাএকটু বিরতি দিয়ে আবার চেষ্টা করুন

ইনপুটের ত্রুটি পড়া

422 validation_failed-এ details প্রতিটি সমস্যা আলাদাভাবে তালিকা করে: field হলো ফিল্ডের পাথ (নেস্টেড অবজেক্টের জন্য স্ল্যাশসহ, যেমন theme_config/button_style), reason হলো যে নিয়ম ভাঙা হয়েছে, যেমন required, minLength, maxLength, enum বা additionalProperties। additionalProperties-এ message জানায় কোন ফিল্ডগুলো অজানা – প্রায়ই ফিল্ডের নামে টাইপো থাকে।

আপনার কোডে প্রস্তাবিত পদ্ধতি

  • 400, 413 আর 422: আবার চেষ্টা করবেন না, বরং রিকোয়েস্ট ঠিক করুন
  • 401 invalid_token: একবার নতুন টোকেন নিয়ে আবার চেষ্টা করুন
  • 403: আবার চেষ্টা করবেন না; স্কোপ, প্ল্যান বা কে এটি করতে পারেন তা যাচাই করুন
  • 404: আইডি যাচাই করুন; কিছু মোছার পর এটি স্বাভাবিক
  • 409: অবস্থা আবার লোড করুন এবং কাজটি এখনো দরকার কি না ঠিক করুন
  • 429: Retry-After যতক্ষণ বলে ততক্ষণ অপেক্ষা করুন, তারপর আবার চেষ্টা করুন – দেখুন রেট লিমিট
  • 500 আর 503: ক্রমশ লম্বা বিরতি দিয়ে কয়েকবার আবার চেষ্টা করুন

কিছু খুঁজে পাননি?

আপনার কী দরকার তা আমাদের জানান, আমাদের সাপোর্ট টিম ব্যক্তিগতভাবে আপনাকে সাহায্য করবে।

সাপোর্টে যোগাযোগ করুন