مستندات
API و وبهوکهای یوزر تستینگ
هر فضای کاری در پلن حرفهای یا سازمانی میتواند کلید API بسازد و رویدادهایش را به آدرس دلخواه بفرستد. کلیدها و وبهوکها ازپنل ← توسعهدهندگانساخته میشوند.
احراز هویت
کلید را در هدر Authorization بفرستید. کلید تنها یک بار، هنگام ساخت، نمایش داده میشود؛ هر درخواست به نام مالک فضای کاری و در محدوده همان فضا اجرا میشود.
curl https://api.usertesting.ir/api/public/v1/me \
-H "Authorization: Bearer ut_live_xxxxxxxxxxxxxxxxxxxxxxxx"- دامنه
readبرای خواندن،writeبرای عملیات تغییردهنده. - سقف نرخ: ۶۰۰ درخواست در دقیقه به ازای هر کلید (هدرهای
RateLimit-*برمیگردند). - هر پاسخ یک
X-Request-Idدارد؛ هنگام گزارش مشکل آن را ذکر کنید.
نقاط پایانی
آدرس پایه: https://api.usertesting.ir/api/public/v1
| متد | مسیر | دامنه | شرح |
|---|---|---|---|
| GET | /me | read | فضای کاری کلید و دامنه دسترسی آن |
| GET | /tests?type=&status=&page=&limit= | read | فهرست تستها با تعداد پاسخ و نرخ تکمیل |
| GET | /tests/{id} | read | یک تست کامل بههمراه ردیف نتیجه |
| GET | /tests/{id}/responses?page=&limit= | read | پاسخهای شرکتکنندگان، جدیدترین اول |
| POST | /tests/{id}/complete | write | پایان دادن به تست |
| GET | /recordings/projects | read | پروژههای ضبط جلسه |
| GET | /recordings/projects/{id}/sessions?page=&limit= | read | جلسههای ضبطشده (بدون رویدادها و اسنپشاتها) |
پاسخها به شکل { "message": "...", "data": { ... } } هستند؛ فهرستها items، page، limit و total دارند. حداکثر limit برابر ۲۰۰ است.
{
"message": "انجام شد.",
"data": {
"items": [
{ "id": "665…", "name": "دستهبندی منوی فروشگاه", "type": "cart-sorting-test",
"status": "published", "responses": 53, "completion_rate": 81, "created_at": "2026-09-01T10:12:00.000Z" }
],
"page": 1, "limit": 50, "total": 1
}
}وبهوکها
برای هر رویداد یک درخواست POST با بدنه JSON به آدرس شما فرستاده میشود. آدرس باید https باشد و با کد ۲xx پاسخ دهد؛ در غیر این صورت تا ۵ بار با فاصله افزایشی (۱، ۵، ۳۰ و ۱۲۰ دقیقه) تکرار میشود. بعد از ۲۵ شکست پیاپی وبهوک خودکار غیرفعال میشود.
| رویداد | زمان ارسال |
|---|---|
response.created | پاسخ جدیدی برای یکی از تستها ثبت شد |
test.published | تستی منتشر شد |
test.completed | تستی به پایان رسید (دستی یا با پر شدن سقف پاسخ) |
recording.session.created | جلسه ضبط جدیدی شروع شد |
member.joined | عضوی به فضای کاری پیوست |
ping | رویداد آزمایشی از پنل |
هدرها و امضا
هر ارسال هدرهای X-UT-Event، X-UT-Delivery، X-UT-Timestamp و X-UT-Signature دارد. امضا، HMAC-SHA256 رشته {timestamp}.{body} با کلید محرمانه وبهوک است. برای جلوگیری از حمله تکرار، ارسالهای قدیمیتر از ۵ دقیقه را رد کنید.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(req, secret) {
const ts = req.headers["x-ut-timestamp"];
const sig = req.headers["x-ut-signature"]; // "sha256=…"
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = "sha256=" + createHmac("sha256", secret)
.update(`${ts}.${req.rawBody}`).digest("hex");
return sig.length === expected.length && timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}{
"id": "0f3c…", "event": "response.created", "created_at": "2026-09-26T09:30:00.000Z",
"workspace": "665…",
"data": { "test_id": "665…", "test_name": "دستهبندی منوی فروشگاه", "test_type": "cart-sorting-test" }
}MCP برای دستیارهای هوش مصنوعی
همان داده، از راه Model Context Protocol (Streamable HTTP، بدون وضعیت). با همان کلید API، فقطخواندنی. نقطه پایانی https://api.usertesting.ir/mcp با هدر Authorization: Bearer، یا برای کلاینتهایی که هدر نمیفرستند https://api.usertesting.ir/mcp/k/<key>. سقف ۳۰۰ درخواست در دقیقه به ازای هر کلید.
claude mcp add --transport http usertesting https://api.usertesting.ir/mcp \
--header "Authorization: Bearer ut_live_..."| ابزار | چه میدهد |
|---|---|
whoami | فضای کاری و دامنههای کلید |
list_tests | تستها با نوع، وضعیت و تعداد پاسخ |
get_test | تنظیمات کامل یک تست و سند نتیجه آن |
list_responses | پاسخهای شرکتکنندهها، صفحهبندیشده، بدون شماره تلفن |
list_recording_projects | پروژههای ضبط جلسه |
list_recording_pages | صفحههای ضبطشده یک پروژه با نام و تعداد جلسه |
list_recording_sessions | جلسهها با فیلتر صفحه، دستگاه و بازه زمانی |
get_session_summary | خلاصه یک جلسه: کلیکها به ترتیب، کلیک عصبی، عمق اسکرول، برچسب و نظر |
get_heatmap | المانهای پرکلیک، عمق اسکرول و توجه برای یک صفحه |
راهنمای گامبهگام اتصال در Claude Desktop، claude.ai و Claude Code در پایگاه دانش آمده است.
خطاها
401کلید نامعتبر یا باطلشده ·402پلن فضای کاری API را شامل نمیشود ·403دامنه کلید کافی نیست یا منبع متعلق به این فضا نیست404منبع پیدا نشد ·429سقف نرخ ·5xxخطای سرور (باrequest_idدر بدنه)