مستندات
راهنمای API سرویسهای مکانی
همه سرویسها (جستجوی آدرس، مسیریابی، تحلیل مکانی، هوش مصنوعی و آب و هوا) از یک آدرس پایه و یک روش احراز هویت استفاده میکنند. این صفحه موارد مشترک را توضیح میدهد؛ جزئیات هر سرویس در صفحه همان سرویس است.
https://cloud.geotajak.ir/api/geo
شروع سریع
- ثبتنام کنید و شماره موبایل را تایید کنید؛ ۲۰۰ هزار ژئوکوین هدیه به کیف پول شما اضافه میشود.
- در توکنهای API یک توکن بسازید و بخشی از موجودی کیف پول را به آن بدهید.
- کلید توکن را در هدر
Authorizationبفرستید:
curl -G "https://cloud.geotajak.ir/api/geo/geocode" \ --data-urlencode "q=میدان آزادی تهران" \ --data-urlencode "limit=1" \ -H "Authorization: Bearer $GEOTAJAK_API_KEY"
احراز هویت
کلید توکن (با پیشوند gk_) را به یکی از این سه روش بفرستید؛ روش اول توصیه میشود:
| روش | نمونه |
|---|---|
| هدر Authorization | Authorization: Bearer gk_... |
| هدر X-API-Key | X-API-Key: gk_... |
| پارامتر آدرس | ?api_key=gk_... |
کلید را در کد عمومی (مثلا اپلیکیشن یا صفحه وب) قرار ندهید مگر اینکه برای آن توکن دامنه مجاز، سقف مصرف و سقف درخواست ساعتی تعیین کرده باشید. برای سرور، آیپی سرور را در توکن محدود کنید. اگر کلید لو رفت، در صفحه توکنها «کلید جدید» بزنید.
کیف پول و هزینه
هر سرویس قیمت مشخصی برای هر درخواست دارد. هزینه هر درخواست موفق از اعتبار توکنی که با آن فراخوانی میکنید کم میشود؛ اشتراک یا خرید جداگانه لازم نیست. اعتبار توکن را از کیف پول اضافه میکنید و هر وقت خواستید اعتبار باقیمانده را به کیف پول برمیگردانید (با حذف توکن هم برمیگردد). واحد همه قیمتها «ژئوکوین» است: کیف پول با خرید بسته ژئوکوین از درگاه بانکی شارژ میشود و فاکتور هر خرید در داشبورد ثبت میشود.
| وضعیت پاسخ | هزینه کسر میشود؟ |
|---|---|
| موفق (2xx) یا «پیدا نشد» (404) | بله |
| ورودی نادرست (400، 422) | خیر |
| خطای سرور (5xx) یا قطعی سرویس | خیر |
| رد شدن بهخاطر توکن، اعتبار یا محدودیتها (401، 402، 403، 429) | خیر |
توکنها و محدودیتها
به تعداد دلخواه توکن بسازید (مثلا یکی برای هر برنامه یا محیط). هر توکن این تنظیمات را دارد:
| تنظیم | توضیح |
|---|---|
| اعتبار | حداکثر مبلغی که توکن میتواند مصرف کند؛ از کیف پول منتقل میشود. |
| سقف مصرف دورهای | مثلا «حداکثر ۱۰۰ هزار ژئوکوین در هفته». دورهها به وقت تهران: روزانه (از نیمهشب)، هفتگی (از شنبه) یا ماهانه (از اول ماه شمسی). |
| سرویسها | همه سرویسها یا فقط سرویسهای انتخابی. |
| سقف درخواست در ساعت | برای کل توکن و/یا هر سرویس جداگانه. |
| تاریخ انقضا | تاریخ شمسی؛ پس از پایان آن روز درخواستها رد میشوند. |
| آیپی مجاز | آیپی یا رنج (مثل 10.0.0.0/24). |
| دامنه مجاز | برای استفاده در مرورگر؛ هدر Origin یا Referer بررسی میشود (مثل *.example.com). |
وقتی اعتبار توکن کمتر از ۱۰٪ شود یا تمام شود، یا تاریخ انقضا نزدیک باشد یا بگذرد، پیامک و اعلان داشبورد دریافت میکنید.
هدرهای پاسخ
| هدر | توضیح |
|---|---|
X-Request-Cost | هزینه همین درخواست (ژئوکوین) |
X-Credit-Remaining | اعتبار باقیمانده توکن (ژئوکوین) |
خطاها
خطاهای مربوط به توکن و هزینه با بدنه {"error": "...", "message": "..."} برمیگردند؛ خطاهای ورودی هر سرویس با {"detail": "..."}.
| کد | error | معنی |
|---|---|---|
| 401 | missing_token / invalid_token | توکن ارسال نشده یا معتبر نیست |
| 401 | token_disabled | توکن غیرفعال شده است |
| 402 | insufficient_credit | اعتبار توکن تمام شده است؛ از کیف پول اضافه کنید |
| 403 | service_not_allowed | توکن به این سرویس دسترسی ندارد |
| 403 | token_expired | تاریخ انقضای توکن گذشته است |
| 403 | ip_not_allowed / domain_not_allowed | درخواست از آیپی یا دامنه غیرمجاز |
| 405 | method_not_allowed | متد HTTP اشتباه است (GET یا POST) |
| 429 | rate_limited | سقف درخواست ساعتی پر شده است |
| 429 | spend_limit_reached | سقف مصرف دورهای پر شده است؛ فیلد resets_at زمان شروع دوره بعد است |
| 502 | upstream_unavailable | سرویس موقتا در دسترس نیست؛ دوباره تلاش کنید |
نمونه کد
Python
import os, requests
API = "https://cloud.geotajak.ir/api/geo"
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['GEOTAJAK_API_KEY']}"
resp = session.post(f"{API}/reverse", json={"lat": 35.6892, "lon": 51.3890}, timeout=60)
if resp.status_code == 402:
print("اعتبار توکن تمام شده است")
resp.raise_for_status()
print(resp.json(), resp.headers["X-Credit-Remaining"])JavaScript
const API = "https://cloud.geotajak.ir/api/geo";
const headers = { Authorization: `Bearer ${process.env.GEOTAJAK_API_KEY}` };
const res = await fetch(`${API}/route?from_lat=35.6892&from_lon=51.3890&to_lat=32.6539&to_lon=51.6660`, { headers });
if (!res.ok) throw new Error((await res.json()).message);
console.log(await res.json(), res.headers.get("X-Credit-Remaining"));ویجت آماده (ui=true)
اگر نمیخواهید برای نمایش نتیجه کد بنویسید، به آدرس هر سرویس ui=true اضافه کنید: بهجای JSON یک صفحه آماده (نقشه، نمودار و جدول همان سرویس) برمیگردد که در <iframe> سایت شما قرار میگیرد. هزینه آن با درخواست معمولی یکی است.
<iframe src="https://cloud.geotajak.ir/api/geo/weather/current?place=یزد&ui=true&api_key=YOUR_TOKEN"
width="100%" height="640" style="border:0" loading="lazy"></iframe>| پارامتر | توضیح |
|---|---|
ui=true | خروجی گرافیکی بهجای JSON |
api_key | توکن API (در آدرس، چون iframe هدر نمیفرستد) |
ui_controls=false | حذف فرم بالای ویجت که بازدیدکننده با آن پارامترها را عوض میکند |
body={...} | برای سرویسهای POST: بدنه JSON در آدرس (یا هر فیلد بهصورت یک پارامتر جدا) |
ui_primary=2563eb | تغییر یک رنگ فقط برای همین فراخوانی؛ همینطور ui_accent، ui_background، ui_surface، ui_text، ui_muted، ui_border، ui_radius، ui_font و ui_map |
رنگها، فونت و گردی گوشهها را یک بار در «قالب رنگ ویجتها»ی توکن (صفحه توکنهای API) تنظیم کنید تا همه ویجتهای آن توکن با سایت شما هماهنگ باشند؛ نتیجه را قبل از استفاده در «آزمایشگاه سرویس» صفحه هر سرویس ببینید. چون کلید در کد صفحه دیده میشود، برای سایت یک توکن جدا با «دامنه مجاز» و «سقف مصرف» بسازید.
اتصال با MCP (برای دستیارهای هوش مصنوعی)
اگر دستیار یا ایجنت هوش مصنوعی میسازید، بهجای نوشتن کد برای هر API میتوانید همه سرویسها را با پروتکل MCP به مدل بدهید. آدرس سرور https://cloud.geotajak.ir/mcp است و با همان توکن API کار میکند؛ هر فراخوانی ابزار برابر یک درخواست همان سرویس حساب میشود.
Claude Code
claude mcp add --transport http geotajak https://cloud.geotajak.ir/mcp \ --header "Authorization: Bearer YOUR_TOKEN"
Cursor، VS Code و برنامههای مشابه
{
"mcpServers": {
"geotajak": {
"url": "https://cloud.geotajak.ir/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}برای هر ایجنت یک توکن جدا با اعتبار و سقف مصرف محدود بسازید. فهرست ابزارها، نمونه Python و نکتههای محدودیت توکن در راهنمای کامل MCP آمده است.
سرویسها
فهرست کامل سرویسها با قیمت، میزان استفاده، نمونه کد و امکان امتحان مستقیم در صفحه سرویسها است. سوالی دارید؟ از بخش تیکتها بپرسید یا از دستیار هوشمند کمک بگیرید.
