رفتن به محتوا

مستندات API

پیش‌بینی کیفیت غروب را در برنامه‌های خود ادغام کنید

برای پیگیری مصرف خود یک کلید API بگیرید
Base URLhttps://sunset-predictor.com
OpenAPI Spec

شروع سریع

در چند ثانیه یک پیش‌بینی غروب آفتاب بگیرید

curl -H "x-api-key: $SUNSET_API_KEY" \
  "https://sunset-predictor.com/api/v1/predict?city=Paris"

‏$SUNSET_API_KEY را با کلیدی از داشبورد خود جایگزین کنید. فراخوانی‌های بدون احراز هویت برای نمایش سریع کار می‌کنند، اما محدودیت سخت‌گیرانه‌تری دارند و هدرهای rate-limit را برنمی‌گردانند.

نمونه پاسخ

{
  "score": 78,
  "label": "High",
  "explanation": "Scattered clouds and clean air should produce vivid colors near the horizon.",
  "confidence": "high",
  "location": "Paris, FR",
  "predictionType": "sunset",
  "sunsetTime": "2026-05-26T19:42:00Z",
  "sunriseTime": "2026-05-26T04:51:00Z",
  "timezone": "Europe/Paris",
  "targetDate": "2026-05-26",
  "rawFactors": {
    "cloudCover": 15,
    "humidity": 55,
    "visibility": 18200,
    "windSpeed": 5.2,
    "windDegree": 180,
    "rainProb": 0,
    "condition": "clouds",
    "temperature": 19.4,
    "dewPoint": 10.2,
    "pressure": 1015,
    "aqi": 2
  }
}

احراز هویت

درخواست‌های خارجی از طریق هدر x-api-key احراز هویت می‌شوند. از داشبورد خود یک کلید بسازید — کلید خام دقیقاً یک بار نمایش داده می‌شود.

هدر

x-api-key: sp_live_YOUR_API_KEY_HERE

کلید API خود را در هر فراخوانی در هدر درخواست x-api-key ارسال کنید.

Scopeها

Scopeتوضیحات
predict:readخواندن پیش‌بینی‌های غروب آفتاب (برای /api/predict الزامی است)
usage:readخواندن آمار مصرف خود این کلید (برای /api/usage الزامی است)

محدودیت‌ها

سطح رایگان — 100 درخواست در روز برای هر کلید، با بازنشانی در نیمه‌شب UTC.

هدرهای پاسخ rate-limit

هر پاسخ موفق با احراز هویت این هدرها را دارد تا بتوانید سهمیه را به‌صورت لحظه‌ای پیگیری کنید:

X-RateLimit-Limitحداکثر درخواست‌های مجاز در بازه فعلی
X-RateLimit-Remainingدرخواست‌های باقی‌مانده امروز
X-RateLimit-Resetمهر زمانی ISO 8601 زمان بازنشانی سهمیه
Retry-Afterتعداد ثانیه‌های انتظار پیش از تلاش دوباره (فقط در 429)

نمونه درخواست با احراز هویت

curl -H "x-api-key: sp_live_YOUR_API_KEY_HERE" \
  "https://sunset-predictor.com/api/v1/predict?city=Paris"

مرجع نقطه‌های پایانی

محیط آزمایش API

API را مستقیماً از مرورگر خود آزمایش کنید. برای فراخوانی با احراز هویت، کلید API خود را وارد کنید (از سهمیه روزانه شما کم می‌شود)؛ برای فراخوانی نمایشی بدون احراز هویت، آن را خالی بگذارید.

دریافت کلید ←

با sp_live_ شروع می‌شود و 40 نویسه طول دارد

فقط در همین زبانه مرورگر (sessionStorage) ذخیره می‌شود و با بستن زبانه پاک می‌شود.

از امروز تا 5 روز آینده. برای امروز خالی بگذارید.

URL درخواست

GET /api/v1/predict?city=Paris

نمونه کدها

نمونه‌های آماده استفاده به زبان‌های برنامه‌نویسی محبوب

# Set your API key once (mint from /dashboard/api-keys)
export SUNSET_API_KEY="sp_live_YOUR_API_KEY_HERE"

curl -H "x-api-key: $SUNSET_API_KEY" \
  "https://sunset-predictor.com/api/v1/predict?city=Paris"

با تغییر پارامترهای محیط آزمایش در بالا، قطعه‌کدها به‌صورت زنده به‌روز می‌شوند.

پاسخ‌های خطا

پاسخ‌های خطای رایج و معنای آن‌ها

400خطای کلاینت

Bad Request

پارامترها ارسال نشده‌اند یا نامعتبرند. یا city یا lat/lon را ارائه دهید.

{
  "error": "Either lat/lon or city must be provided"
}
401احراز هویت / مجوز

Unauthorized

کلید API ارسال نشده، بدشکل یا باطل‌شده است. یک کلید معتبر در هدر x-api-key ارسال کنید.

{
  "error": "Invalid or revoked API key",
  "code": "unauthorized"
}
403احراز هویت / مجوز

Forbidden

کلید معتبر است اما scope ‏predict:read لازم برای این نقطه پایانی را ندارد.

{
  "error": "Insufficient permissions. Required scope: predict:read",
  "code": "insufficientScope"
}
404خطای کلاینت

Not Found

شهر مشخص‌شده پیدا نشد.

{
  "error": "City not found",
  "code": "cityNotFound"
}
429خطای کلاینت

Too Many Requests

سهمیه روزانه تمام شده است (100 درخواست در روز در سطح رایگان). بازنشانی در نیمه‌شب UTC انجام می‌شود؛ هدر Retry-After را بررسی کنید.

{
  "error": "Daily rate limit exceeded (100 requests/day). Upgrade your plan for higher limits.",
  "code": "rateLimitExceeded",
  "retryAfter": 3600
}
500خطای سرور

Server Error

خطای داخلی سرور رخ داد. لطفاً بعداً دوباره تلاش کنید.

{
  "error": "Internal server error"
}
502خطای سرور

Bad Gateway

سرویس‌دهنده ژئوکدینگ بالادستی با خطا مواجه شد. با کمی تأخیر دوباره تلاش کنید؛ برای رد شدن از ژئوکدینگ، ارسال lat/lon را در نظر بگیرید.

{
  "error": "Unable to look up city location",
  "code": "geocodingFailed"
}

بهترین شیوه‌ها

پاسخ‌ها را کش کنید

پیش‌بینی‌ها در سمت سرور به مدت 20 دقیقه برای هر (lat, lon, lang, date) کش می‌شوند. از درخواست‌های مکرر با فاصله کمتر خودداری کنید.

بازه تاریخ

پیش‌بینی‌ها از دیروز تا 5 روز آینده در دسترس هستند. تاریخ‌های دورتر نتایج کم‌دقت‌تری برمی‌گردانند.

مختصات را ترجیح دهید

استفاده از lat/lon دقیق‌تر است، از ابهام نام شهرهای مشترک بین مناطق مختلف جلوگیری می‌کند و ژئوکدینگ را حذف می‌کند.

خطاها را به‌درستی مدیریت کنید

کد وضعیت HTTP و فیلد code در پاسخ را بررسی کنید. خطاهای 401/403 را به کاربر نشان دهید و در 429 با استفاده از Retry-After درخواست‌ها را به تعویق بیندازید.

محدودیت نرخ را رعایت کنید

در هر پاسخ X-RateLimit-Remaining را بخوانید. در 429، پیش از تلاش دوباره منتظر پایان بازه Retry-After (بازنشانی در نیمه‌شب UTC) بمانید.

کلیدها را در سمت سرور نگه دارید

هرگز کلید API را در بسته کد عمومی سمت کلاینت، اپلیکیشن موبایل یا مخزن کد قرار ندهید. درخواست‌ها را از طریق بک‌اند خود عبور دهید و کلیدها را در متغیرهای محیطی یا یک ابزار مدیریت اسرار نگه دارید.

استفاده و مجوز

چه زمانی سطح رایگان کافی است — و چه زمانی به طرح پولی نیاز دارید.

سطح رایگان

رایگان برای استفاده شخصی، سرگرمی، خانه هوشمند و آزمایش.

  • •پروژه‌ها و نمونه‌های اولیه شخصی
  • •سرگرمی و یادگیری
  • •داشبوردهای خانه هوشمند (مثلاً Home Assistant) برای استفاده شخصی
  • •آزمایش و ارزیابی

100 درخواست در روز برای هر کلید API.

سطح Plus

سقف‌های شخصی بالاتر برای حامیان، به‌علاوه سایت بدون تبلیغات. فقط برای استفاده شخصی — پروژه‌های تجاری به Pro نیاز دارند.

200 درخواست در روز برای هر کلید API، 2 کلید API.

استفاده تجاری

استفاده تجاری به طرح پولی نیاز دارد — Pro یا Business.

سطح‌های پولی سقف درخواست روزانه بالاتری دارند و کلیدهای API بیشتری مجاز می‌کنند.

مشاهده قیمت‌ها

Home Assistant و سایر یکپارچه‌سازی‌های خانه هوشمند برای استفاده شخصی و غیرتجاری همچنان در سطح رایگان مجاز هستند.

کلید API خود را محرمانه نگه دارید. از آن در سمت سرور استفاده کنید و هرگز آن را در کد عمومی سمت کلاینت قرار ندهید یا در مخزن کد ثبت نکنید.

در حال ساخت محصولی تجاری هستید یا به محدودیتی برخورده‌اید که نمی‌توانید حلش کنید؟ تماس با پشتیبانی