ডকুমেন্টেশন
ব্রাউজারে একটি স্ক্রিপ্ট, আপনার সার্ভার থেকে একটি API কল। লাইভ হতে যা যা লাগবে, সব এক পেজে।
কুইক স্টার্ট
ব্রাউজারের জন্য আপনার পাবলিক কী (pk_...) আর সার্ভারের জন্য সিক্রেট কী (sk_...) লাগবে। দুটোই ড্যাশবোর্ডের Sites and keys অংশে আছে।
1. স্ক্রিপ্ট যোগ করুন
যে পেজগুলোতে ইউজাররা সাইন আপ, লগ ইন, অফারে ক্লিক বা ক্যাশআউট রিকোয়েস্ট করে, সেখানে এই ট্যাগটি বসান। এটি নিজে থেকেই ইনিশিয়ালাইজ হয় এখান থেকে: data-key
<script src="https://cashoutguard.com/v1/agent.js" data-key="pk_live_YOUR_PUBLIC_KEY" async></script>
2. request_id সংগ্রহ করে আপনার সার্ভারে পাঠান
গুরুত্বপূর্ণ মুহূর্তে ইভেন্টের নাম দিয়ে collect() কল করুন। এটি রিজলভ হয়: { request_id, visitor_id }
const { request_id } = await CashoutGuard.collect({ event: 'cashout' });
collect() কখনো reject করে না। ব্যর্থ হলে (ব্লকড, অফলাইন, টাইমআউট) এটি request_id: null আর একটি এরর স্ট্রিং দিয়ে রিজলভ হয়। তবুও ফর্ম পাঠান, সিদ্ধান্ত আপনার সার্ভার নেবে।
3. আপনার সার্ভার থেকে সিদ্ধান্ত জেনে নিন
হেডারে আপনার সিক্রেট কী দিয়ে ইভেন্টটি /v1/evaluate-এ POST করুন: Authorization: Bearer sk_live_...
সিক্রেট কী কখনো ব্রাউজার কোড বা মোবাইল অ্যাপে রাখবেন না। শুধু আপনার সার্ভারই /v1/evaluate কল করবে।
Evaluate রিকোয়েস্ট
POST https://cashoutguard.com/v1/evaluate একটি অ্যাকাউন্টের একটি ইভেন্ট স্কোর করে, সেটিকে তার ডিভাইস, নেটওয়ার্ক আর পেআউট অ্যাড্রেসের সাথে যুক্ত করে এবং একটি সিদ্ধান্ত ফেরত দেয়। JSON পাঠান।
| ফিল্ড | টাইপ | আবশ্যক | বিবরণ |
|---|---|---|---|
event | string | আবশ্যক | signup, login, offer_click, conversion, cashout অথবা custom। |
account_id | string | আবশ্যক | আপনার ইউজার ID, সর্বোচ্চ 191 অক্ষর। ইমেইল নয়, একটি অস্বচ্ছ (opaque) ID ব্যবহার করুন। |
request_id | string | ঐচ্ছিক | ব্রাউজারের collect() থেকে পাওয়া। 1 ঘণ্টা বৈধ। এটি ছাড়া আমাদের কাছে শুধু নেটওয়ার্ক ডেটা থাকে। |
ip | string | ঐচ্ছিক | ইউজারের IP। শুধু request_id না থাকলে দরকার, যেমন postback-এর ক্ষেত্রে। |
email | string | ঐচ্ছিক | হ্যাশ করে রাখা হয়। ডিসপোজেবল ডোমেইন আর একাধিক অ্যাকাউন্টে শেয়ার করা ইমেইল ধরে। |
payout_address | string | ঐচ্ছিক | যে PayPal ইমেইল, ওয়ালেট বা অ্যাকাউন্টে টাকা যায়। হ্যাশ করে রাখা হয়। |
payout_method | string | ঐচ্ছিক | ফ্রি টেক্সট, যেমন paypal, usdt বা giftcard। |
amount | number | ঐচ্ছিক | ক্যাশআউট বা কনভার্শনের পরিমাণ। |
currency | string | ঐচ্ছিক | কারেন্সি কোড, যেমন USD। ক্যাশআউটের জন্য ডিফল্ট USD। |
offer_id | string | ঐচ্ছিক | অফার ID, offer_click আর conversion-এর জন্য। অফারের গতি মাপতে ব্যবহৃত হয়। |
offer_country | string | ঐচ্ছিক | যে দেশের জন্য অফার পে করে (ISO কোড, যেমন US), কনভার্শনে। অন্য দেশের ইউজার চিহ্নিত হয়। |
geo_country | string | ঐচ্ছিক | ইউজারের IP-র আপনার নিজস্ব জিওলোকেশন (ISO কোড)। আমাদেরটার সাথে না মিললে IP সম্ভবত প্রক্সি এক্সিট। |
transaction_id | string | ঐচ্ছিক | কনভার্শনের নেটওয়ার্ক ট্রানজেকশন ID। ডুপ্লিকেট ধরতে ব্যবহৃত হয়। |
offer_name | string | ঐচ্ছিক | অফারের শিরোনাম, যেমন আপনার ব্যবহারকারীরা দেখে। ড্যাশবোর্ডে ID-এর বদলে এটাই দেখায়। |
click_id | string | ঐচ্ছিক | আপনার ক্লিক ID। offer_click ও কনভার্শনে একই মান পাঠান যাতে এগুলো যুক্ত হয়। |
source | string | ঐচ্ছিক | ইভেন্ট কোথা থেকে এসেছে, যেমন অফারওয়াল বা নেটওয়ার্কের নাম। |
meta | object | ঐচ্ছিক | ইভেন্টের সাথে সংরক্ষিত ২০টি পর্যন্ত অতিরিক্ত টেক্সট ফিল্ড (যেমন sub ID)। |
রেসপন্স
রেসপন্সের কাঠামো সবসময় একই থাকে। যে ফিল্ড প্রযোজ্য নয় সেগুলো null।
score0 থেকে 100। কারণগুলো এমনভাবে মেলানো হয় যাতে কয়েকটি মাঝারি সিগন্যাল যোগ হয়েও 100 পার না হয়।reasonsযত সিগন্যাল ট্রিগার হয়েছে সব দেখায়, সবচেয়ে শক্তিশালীটি আগে, ওয়েট, বিস্তারিত আর সরাসরি দেখানোর মতো সহজ ইংরেজি লেবেলসহ।device.confidenceডিভাইসটি কতটা ইউনিক মনে হচ্ছে তা জানায়। ফিঙ্গারপ্রিন্ট স্পুফ করা যায়, তাই আমরা কখনো নিশ্চয়তার দাবি করি না।linked_accountsএই অ্যাকাউন্টের সাথে ডিভাইস, পেআউট অ্যাড্রেস বা ইমেইল শেয়ার করা অন্য অ্যাকাউন্টগুলো দেখায়।cashoutশুধু cashout ইভেন্টে সেট হয় এবং আপনার রিভিউ কিউতে স্ট্যাটাস জানায়।
সিদ্ধান্ত ও action
decision নয়, action ফিল্ড অনুযায়ী কাজ করুন। নিচের থ্রেশহোল্ডগুলো ডিফল্ট, ড্যাশবোর্ড থেকে প্রতিটি সাইটের জন্য আলাদা করে বদলানো যায়।
| সিদ্ধান্ত | স্কোর (ডিফল্ট) | শ্যাডোতে action | enforce-এ action | কী করবেন |
|---|---|---|---|---|
allow | 0-49 | allow | allow | স্বাভাবিকভাবে চালিয়ে যান। |
review | 50-79 | allow | review | ক্যাশআউট হোল্ড করুন বা অতিরিক্ত ভেরিফিকেশন চান। এটি আপনার রিভিউ কিউতে দেখা যাবে। |
block | 80-100 | allow | block | অ্যাকশনটি থামান। ব্যালেন্স ফ্রিজ করুন বা সাইন আপ প্রত্যাখ্যান করুন। |
শ্যাডো মোডে action সবসময় allow, তাই enforce চালুর আগেই একই কোড নিশ্চিন্তে ডিপ্লয় করতে পারেন। enforce-এ গেলে আপনার কোডে কিছুই বদলাতে হয় না।
ইভেন্টের ধরন
আপনার কাছে যে ইভেন্টগুলো আছে সেগুলো পাঠান। সাইন আপ আর ক্যাশআউট সবচেয়ে গুরুত্বপূর্ণ; কনভার্শন দিয়ে অফারের গতি চেক হয়।
| ইভেন্ট | কখন পাঠাবেন | কী ধরে |
|---|---|---|
signup | অ্যাকাউন্ট তৈরি হলে | মাল্টি-অ্যাকাউন্ট, বট, VPN সাইন আপ, ডিসপোজেবল ইমেইল |
login | সফল লগইনের পর | অ্যাকাউন্ট শেয়ারিং, দেশ বদল, নতুন ডিভাইস |
offer_click | ইউজার একটি অফার খুললে | অফারের গতি মাপার ঘড়ি চালু করে |
conversion | offerwall বা নেটওয়ার্ক থেকে postback এলে | অতি দ্রুত শেষ হওয়া অফার, ডুপ্লিকেট ট্রানজেকশন, কনভার্শনের ঝড় |
cashout | ইউজার উইথড্র রিকোয়েস্ট করলে | শেয়ার করা পেআউট অ্যাড্রেস, ক্যাশআউট ভেলোসিটি, নতুন অ্যাকাউন্টের ক্যাশআউট |
custom | আর যা কিছু স্কোর করাতে চান | ডিভাইস ও নেটওয়ার্ক সিগন্যাল |
অফারওয়াল ও পোস্টব্যাক
অফারওয়াল কনভার্শন পোস্টব্যাকের মাধ্যমে আসে, সার্ভার থেকে সার্ভারে, ব্রাউজার ছাড়া। CashoutGuard প্রতিটি কনভার্শনকে যে ক্লিক থেকে শুরু হয়েছে তার সাথে যুক্ত করে, তাই সেই ক্লিকের ডিভাইস ও নেটওয়ার্ক দিয়ে স্কোর হয়।
১. ব্যবহারকারী যখন অফার খোলে
ব্রাউজারে কালেক্ট করুন এবং অফার ও আপনার ক্লিক ID সহ offer_click পাঠান।
২. পোস্টব্যাক এলে
আপনার পোস্টব্যাক হ্যান্ডলার থেকে একই account_id ও click_id দিয়ে conversion পাঠান। request_id লাগবে না। অফারওয়াল ব্যবহারকারীর IP দিলে সেটাও পাঠান।
কনভার্শন যাচাই করা হয়: অফারের জন্য খুব দ্রুত সম্পন্ন, ক্লিক ছাড়া কনভার্শন, ক্লিক ও কনভার্শন ভিন্ন দেশ থেকে, অ্যাকাউন্টের স্বাভাবিক দিনের চেয়ে অনেক বেশি আয়, এবং ডুপ্লিকেট ট্রানজ্যাকশন ID।
অফারওয়াল নেটওয়ার্ক
অনেক পাবলিশারসহ নেটওয়ার্ক চালালে পাবলিশারসহ অ্যাকাউন্ট ID পাঠান এবং Sites-এ "অফারওয়াল নেটওয়ার্ক মোড" চালু করুন। তখন অ্যাকাউন্ট শুধু একই পাবলিশারের মধ্যে যুক্ত হয়, কারণ একজন মানুষের একাধিক পাবলিশারের সাইট ব্যবহার করা স্বাভাবিক। ফরম্যাট: publisher_id:user_id
অফার ক্যাটালগ
POST /v1/offers আপনার অফারের নাম পাঠায় (প্রতি কলে ১,০০০ পর্যন্ত)। পুরনো ও নতুন ইভেন্ট আসল নাম দেখাবে, যদিও তাতে শুধু ID থাকে।
রিজন কোড
এই কোডগুলো reasons[].code-এ আসে। মডারেটরদের টেক্সটটি দেখান; আপনার লজিকে কোডটি ব্যবহার করুন।
| কোড | অর্থ | গ্রুপ | ওয়েট |
|---|---|---|---|
ip_tor | Tor এক্সিট নোড | নেটওয়ার্ক | 60 |
ip_vpn | VPN কানেকশন | নেটওয়ার্ক | 45 |
ip_datacenter | ডেটাসেন্টার / হোস্টিং IP | নেটওয়ার্ক | 40 |
timezone_mismatch | ব্রাউজারের টাইমজোন IP লোকেশনের সাথে মেলে না | নেটওয়ার্ক | 20 |
webrtc_ip_leak | আসল IP অন্য দেশে ফাঁস হয়েছে | নেটওয়ার্ক | 30 |
ip_multi_timezone | একই IP-তে অনেক আলাদা টাইমজোন (প্রক্সি এক্সিট) | নেটওয়ার্ক | 50 |
proxy_farm_ip | এক IP-তে কয়েকটি অ্যাকাউন্ট, সবগুলোর একই বিদেশি ঘড়ি (শেয়ার করা প্রক্সি) | নেটওয়ার্ক | 60 |
provider_rotation | কয়েক দিনে অনেক ইন্টারনেট প্রোভাইডার, বিদেশি ঘড়িসহ (ঘূর্ণায়মান রেসিডেনশিয়াল প্রক্সি) | নেটওয়ার্ক | 45 |
privacy_relay | iCloud Private Relay (প্রাইভেসি ফিচার) | নেটওয়ার্ক | 5 |
proxy_headers | রিকোয়েস্ট প্রক্সি দিয়ে এসেছে | নেটওয়ার্ক | 20 |
geo_sources_disagree | জিওলোকেশন উৎসগুলো মেলে না | নেটওয়ার্ক | 45 |
ip_shared_with_accounts | আজ একই IP অন্য অ্যাকাউন্টেও ব্যবহৃত হয়েছে | নেটওয়ার্ক | 25 |
country_changed | দেশ বদলেছে | নেটওয়ার্ক | 15 |
impossible_travel | অসম্ভব ভ্রমণ: কয়েক ঘণ্টার মধ্যে দুটি দূরের দেশের IP | নেটওয়ার্ক | 50 |
locale_country_mismatch | অন্য দেশের ব্রাউজার ভাষা | নেটওয়ার্ক | 30 |
phone_country_mismatch | IP-এর থেকে ভিন্ন দেশের ফোন | নেটওয়ার্ক | 20 |
ip_flagged_on_network | অন্য ওয়েবসাইটে ব্লক হওয়া IP | নেটওয়ার্ক | 25 |
device_shared_with_accounts | ডিভাইসটি অন্য অ্যাকাউন্টের সাথে শেয়ার করা | ডিভাইস | 55 |
automation_detected | বট বা অটোমেশন টুল | ডিভাইস | 70 |
auto_clicker | ফোনে অটো-ক্লিকার | ডিভাইস | 55 |
scripted_behavior | স্ক্রিপ্ট দিয়ে পেজ ব্যবহার | ডিভাইস | 45 |
emulator_or_vm | ইমুলেটর বা ভার্চুয়াল মেশিন | ডিভাইস | 45 |
browser_tampering | ব্রাউজারে কারসাজি / স্পুফিং | ডিভাইস | 35 |
device_rooted | রুট করা ফোন | ডিভাইস | 25 |
incognito | প্রাইভেট ব্রাউজিং | ডিভাইস | 10 |
device_spoofed | নকল ফোন মডেল | ডিভাইস | 55 |
emulator_profile | এমুলেটরের ডিফল্ট প্রোফাইল | ডিভাইস | 60 |
cloud_phone | ক্লাউড ফোন | ডিভাইস | 60 |
phone_farm_display | ফোন ফার্মের ডিসপ্লে | ডিভাইস | 45 |
device_market_mismatch | শুধু চীনের ফোন বিদেশে | ডিভাইস | 25 |
storage_cleared_reappeared | কুকি মুছে আবার ফিরে এসেছে | ডিভাইস | 15 |
no_device_data | কোনো ডিভাইস ডেটা পাঠানো হয়নি | ডিভাইস | 15 |
request_reused | ডিভাইস টোকেন অন্য অ্যাকাউন্টে আবার ব্যবহৃত | ডিভাইস | 40 |
device_farm_proxy | রেসিডেনশিয়াল প্রক্সিতে ফোন ফার্ম | ডিভাইস | 85 |
device_clones | ডিভাইস ক্লোন: একটি ফোন নিজের পরিচয় রিসেট করে এক নেটওয়ার্কে অনেক নতুন অ্যাকাউন্ট সাজছে | ডিভাইস | 55 |
payout_address_shared | পেআউট অ্যাড্রেস অন্য অ্যাকাউন্টেও ব্যবহৃত | অ্যাকাউন্ট | 70 |
email_disposable | ডিসপোজেবল ইমেইল | অ্যাকাউন্ট | 25 |
email_invalid | যে ইমেইলে মেইল আসতে পারে না (এমন কোনো মেইল ডোমেইন নেই) | অ্যাকাউন্ট | 35 |
email_shared | অন্য অ্যাকাউন্টের মতো একই ইমেইল | অ্যাকাউন্ট | 50 |
phone_shared | অন্য অ্যাকাউন্টের সাথে শেয়ার করা ফোন নম্বর | অ্যাকাউন্ট | 50 |
phone_voip | VoIP বা ভার্চুয়াল নম্বর | অ্যাকাউন্ট | 40 |
phone_invalid | অবৈধ ফোন নম্বর | অ্যাকাউন্ট | 30 |
many_devices_per_account | এক অ্যাকাউন্টে অনেক বেশি ডিভাইস | অ্যাকাউন্ট | 20 |
flagged_on_network | CashoutGuard-সুরক্ষিত অন্য ওয়েবসাইটে চিহ্নিত | অ্যাকাউন্ট | 45 |
face_same_person | অন্য অ্যাকাউন্টের মতো একই মুখ | অ্যাকাউন্ট | 0 |
offer_completed_too_fast | অসম্ভব দ্রুত অফার সম্পন্ন | আচরণ | 40 |
slow_after_click | ক্লিকের অনেক পরে কনভার্শন | আচরণ | 0 |
conversion_velocity | ঘণ্টায় অনেক বেশি কনভার্শন | আচরণ | 30 |
conversion_without_click | আপনার ওয়াল থেকে ক্লিক ছাড়াই কনভার্শন | আচরণ | 35 |
click_conversion_country_mismatch | এক দেশে ক্লিক, অন্য দেশে কনভার্শন | আচরণ | 30 |
offer_country_mismatch | অফারের দেশ ইউজারের দেশের সাথে মেলে না | আচরণ | 45 |
click_velocity | কয়েক মিনিটে অনেক বেশি অফার ক্লিক | আচরণ | 35 |
earnings_spike | সাধারণ ইউজারের চেয়ে অনেক বেশি আয় | আচরণ | 30 |
source_high_reversals | অনেক চার্জব্যাক থাকা সোর্স | আচরণ | 45 |
offer_high_reversals | অনেক চার্জব্যাক থাকা অফার | আচরণ | 35 |
duplicate_transaction | ডুপ্লিকেট ট্রানজেকশন ID | আচরণ | 60 |
offer_repeated_other_publisher | একই অফার আগেই অন্য পাবলিশারের মাধ্যমে করা হয়েছে | আচরণ | 85 |
offer_repeated_other_account | একই অফার এই ডিভাইসে অন্য অ্যাকাউন্টে আগেই করা | আচরণ | 85 |
offer_farm_burst | ফার্ম ঢেউ: কয়েক ঘণ্টায় এই অফারে ফার্ম ডিভাইসসহ অনেক নতুন অ্যাকাউন্ট | আচরণ | 30 |
signup_burst | নিবন্ধনের ঢেউ: আলাদা IP থেকে কয়েক সেকেন্ডের মধ্যে কয়েকটি অ্যাকাউন্ট নিবন্ধিত | আচরণ | 25 |
face_check_required | মুখ যাচাই দরকার, এখনও হয়নি | আচরণ | 0 |
face_check_failed | মুখ যাচাই ব্যর্থ | আচরণ | 0 |
publisher_farm_wave | প্রকাশকের ফার্ম ঢেউ: এই অফারে পাঠানো বেশিরভাগ নতুন অ্যাকাউন্ট ক্লাউড ফোন বা এমুলেটর থেকে এসেছে | আচরণ | 55 |
cashout_velocity | দিনে অনেক বেশি ক্যাশআউট | আচরণ | 30 |
new_account_cashout | একদম নতুন অ্যাকাউন্ট থেকে ক্যাশআউট | আচরণ | 20 |
blocklisted | আপনার ব্লকলিস্টে আছে | আপনার লিস্ট | 100 |
ওয়েটগুলো noisy-OR দিয়ে মেলানো হয়: score = 100 x (1 - product of (1 - weight/100))। 40-এর দুটি সিগন্যাল দেয় 64, 80 নয়। ব্লকলিস্টে মিললে সবসময় 100।
Webhooks
ড্যাশবোর্ডে একটি ওয়েবহুক URL সেট করুন। block স্কোর পাওয়া প্রতিটি ইভেন্টে (event.blocked), কোনো অ্যাকাউন্ট block হলে (account.blocked) এবং আপনার টিম ক্যাশআউটের সিদ্ধান্ত নিলে (cashout.decided) আমরা POST পাঠাই। যে টাইপ ব্যবহার করেন না সেগুলো উপেক্ষা করুন।
প্রতিটি রিকোয়েস্ট আপনার webhook সিক্রেট দিয়ে সাইন করা। raw বডির hex HMAC-SHA256 থাকে এই হেডারে: X-CashoutGuard-Signature
যেকোনো 2xx স্ট্যাটাস দিয়ে রিপ্লাই দিন। ব্যর্থ ডেলিভারি সর্বোচ্চ 5 বার আবার চেষ্টা করা হয়: 10 সেকেন্ড, 1 মিনিট, 5 মিনিট আর 15 মিনিট পর।
অ্যাকাউন্ট স্ট্যাটাস
GET /v1/accounts/{account_id} কোনো ইভেন্ট তৈরি না করেই একটি অ্যাকাউন্টের বর্তমান রিস্ক অবস্থা ফেরত দেয়।
POST /v1/accounts/{account_id}/status আপনার নিজের মডারেশন টুল দিয়ে অ্যাকাউন্টের স্ট্যাটাস বদলাতে দেয়।
active: স্বাভাবিক স্কোরিং।allowlisted: স্কোর রিভিউ থ্রেশহোল্ডের নিচে সীমিত থাকে। বিশ্বস্ত ইউজার আর স্টাফদের জন্য।blocked: প্রতিটি ইভেন্ট 100 স্কোরসহ block ফেরত দেয়।
রিভার্সাল ও নির্ভুলতা
POST /v1/outcomes স্কোর করার পরে কনভার্শনের কী হয়েছে তা জানায়: offerwall বা বিজ্ঞাপনদাতা রিভার্স করেছে (chargeback) নাকি বৈধ। আমরা আপনার id মিলিয়ে Accuracy পেজে আপনার ট্রাফিকে ইঞ্জিন মাপি।
কোড ছাড়াই: Accuracy পেজে আপনার offerwall-এর মাসিক রিভার্সাল এক্সপোর্ট (CSV বা Excel) আপলোড করুন। id কলাম আমরা নিজেরাই খুঁজে নিই।
PHP, Node.js, Python, Android
কোনো SDK লাগবে না। ছোট টাইমআউটসহ একটি সাধারণ HTTP কলই যথেষ্ট। পুরো ক্যাশআউটের উদাহরণ:
- cashoutguard.php: PHP 7.4+, একটি ফাইল, Composer লাগবে না। শুধু require করুন।
- composer require cashoutguard/cashoutguard-php: একই PHP ক্লায়েন্ট README-সহ, আপনার vendor ফোল্ডারের জন্য।
- npm install @cashoutguard/node: Node 18+, TypeScript টাইপসহ।
- cashoutguard-wordpress.zip: ওয়ার্ডপ্রেস প্লাগইন: প্রতিটি পেজে ব্রাউজার স্ক্রিপ্ট, সাইনআপ ও লগইনের স্কোর, এবং ক্যাশআউট, অফারওয়াল কনভার্শন ও রিভার্সালের জন্য হুক।
এরর ও লিমিট
| HTTP | বডি | অর্থ |
|---|---|---|
| 401 | missing_or_invalid_secret_key | সিক্রেট কী নেই, ভুল বা বাতিল করা হয়েছে। উত্তরে কারণ "reason"-এ (missing, public_key, unknown_secret, placeholder, malformed) এবং সমাধান "hint"-এ থাকে। |
| 404 | not_found | অ্যাকাউন্ট পাওয়া যায়নি (অ্যাকাউন্ট এন্ডপয়েন্ট)। |
| 422 | { "message", "errors" } | বডি সঠিক নয়। errors-এ প্রতিটি ফিল্ড দেখানো থাকে। |
| 429 | Too Many Requests | রেট লিমিটে পৌঁছে গেছেন। সার্ভার API প্রতি সাইটে মিনিটে 3,000 রিকোয়েস্ট অনুমতি দেয়। |
| 401 · agent.js | unknown_public_key | data-key কোনো সাইটের পাবলিক কী নয়। Install থেকে pk_live_... আবার কপি করুন। |
| 403 · agent.js | origin_not_allowed | পেজের ডোমেইন সাইটের allowed origins-এ নেই। Sites-এ যোগ করুন বা তালিকা ফাঁকা রাখুন। localhost সবসময় কাজ করে। agent.js ব্রাউজার কনসোলেও এটি জানায়। অ্যাপের WebView "null" অরিজিন পাঠায়: এগুলো গ্রহণ করতে তালিকায় null যোগ করুন। নেটিভ Android SDK-এর কিছু লাগে না। |
| 403 | account_suspended | অ্যাকাউন্ট স্থগিত, সাধারণত বকেয়া ইনভয়েসের কারণে। Billing দেখুন। |
| 503 | temporarily_unavailable | আমাদের দিকে সংক্ষিপ্ত সমস্যা। অ্যাকশনটি হতে দিন এবং পরে আবার চেষ্টা করুন। |
Fail open: কল টাইমআউট বা এরর হলে অ্যাকশনটি allow করুন এবং লগ রাখুন। আমাদের সার্ভিস ডাউন থাকলে যেন আপনার ইউজাররা আটকে না যায়।