مستندات
هر فضای کاری در پلن سازمانی میتواند کلید 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=&archived=&page=&limit= | read | فهرست تستها با تعداد پاسخ و نرخ تکمیل؛ archived=true فقط تستهای آرشیوشده |
| 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" }
}همان داده، از راه 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 در بدنه)