هوپh0p.ir

مستندات API

API هوپ ساده و JSON است. ساخت لینک بدون کلید هم ممکن است (با محدودیت نرخ)؛ برای مدیریت لینک‌ها و آمار خصوصی، از کلید API حساب رایگان خود استفاده کنید.

آدرس پایه: https://h0p.ir/api/v1   احراز هویت: هدر Authorization: Bearer h0p_xxx یا پارامتر key. بدنه درخواست می‌تواند form یا JSON باشد.

ساخت لینک کوتاه

POST /api/v1/shorten

پارامترتوضیح
urlالزامی — آدرس مقصد
codeنام دلخواه (۳ تا ۴۰ کاراکتر؛ حروف، عدد، - و _)
titleعنوان برای خودتان
passwordرمز لینک
expiresتاریخ انقضا: 1405/07/30 یا 2026-10-22 (+ ساعت اختیاری 14:00، به وقت تهران)
max_clicksسقف تعداد بازدید
public_stats1 = آمار عمومی
curl -X POST https://h0p.ir/api/v1/shorten \
  -H "Authorization: Bearer h0p_YOUR_KEY" \
  -d "url=https://example.com/very/long/page" \
  -d "code=my-link" -d "title=Instagram bio"
{
  "ok": true,
  "link": {
    "code": "my-link",
    "short_url": "https://h0p.ir/my-link",
    "url": "https://example.com/very/long/page",
    "clicks": 0, "status": "active",
    "stats_url": "https://h0p.ir/my-link+",
    "qr_svg": "https://h0p.ir/my-link/qr.svg"
  }
}

بدون کلید هم می‌توانید POST /api/v1/shorten بزنید (۶۰ لینک در ساعت به‌ازای هر IP). در این حالت پاسخ یک manage_url هم دارد که تنها راه مدیریت آن لینک است.

فهرست لینک‌های من

GET /api/v1/links?page=1&per_page=50 — کلید الزامی.

آمار یک لینک

GET /api/v1/stats/{code}?days=30 — کلید مالک، یا بدون کلید اگر آمار لینک عمومی باشد.

{
  "ok": true,
  "link": { "code": "my-link", ... },
  "stats": {
    "clicks": 1280, "unique_visitors": 940, "bot_hits": 37, "today": 12, "last_7_days": 210,
    "daily": { "2026-09-01": 40, "2026-09-02": 55, ... },
    "hourly": { "09": 30, "10": 48, ... },
    "referrers": { "instagram.com": 700, "direct": 400, "t.me": 180 },
    "countries": { "IR": 1200, "DE": 40 },
    "devices": { "mobile": 1100, "desktop": 180 },
    "browsers": { "Chrome": 900, "Instagram": 300 },
    "os": { "Android": 800, "iOS": 300 }
  }
}

ویرایش لینک

POST /api/v1/links/{code} — همان پارامترهای ساخت به‌علاوه status (active | disabled). فقط فیلدهایی که می‌فرستید تغییر می‌کنند؛ password= خالی رمز را حذف می‌کند.

حذف لینک

DELETE /api/v1/links/{code} یا POST /api/v1/links/{code}/delete

مقصد یک لینک کوتاه (بدون شمارش کلیک)

GET /api/v1/expand/{code} — عمومی.

خطاها

همه پاسخ‌ها {"ok": false, "error": "..."} با کد HTTP مناسب: 401 کلید نامعتبر، 403 عدم دسترسی، 404 پیدا نشد، 422 ورودی نامعتبر، 429 محدودیت نرخ.

نمونه پایتون

import requests
r = requests.post("https://h0p.ir/api/v1/shorten",
    headers={"Authorization": "Bearer h0p_YOUR_KEY"},
    json={"url": "https://example.com/page", "title": "test"})
print(r.json()["link"]["short_url"])

نمونه جاوااسکریپت

const r = await fetch("https://h0p.ir/api/v1/shorten", {
  method: "POST",
  headers: {"Content-Type": "application/json", "Authorization": "Bearer h0p_YOUR_KEY"},
  body: JSON.stringify({url: "https://example.com/page"})
});
const {link} = await r.json();
console.log(link.short_url);