FormIQ Developer API
REST endpoints for uploading videos, running pose analysis, and managing coach bookings.
Base URL
api.formiq.app
Auth
Bearer token
Rate limit
600 req/min
curl https://api.formiq.app/v1/videos \
-H "Authorization: Bearer fiq_sess_••••" \
-H "Content-Type: application/json" \
-d '{ "title": "Jump shot", "sport": "Basketball", "duration": 42 }'Authentication
/v1/auth/sessionExchange credentials for a session token.
Request
{
"email": "athlete@formiq.app",
"password": "••••••••"
}Response
{
"token": "fiq_sess_••••",
"expires_in": 3600,
"user": { "id": "u_01", "role": "athlete" }
}/v1/auth/logoutRevoke the current session token.
Response
{ "ok": true }Videos
/v1/videosCreate a video record and receive a signed upload URL.
Request
{ "title": "Jump shot", "sport": "Basketball", "duration": 42 }Response
{
"id": "v_a1b2",
"upload_url": "https://uploads.formiq.app/...",
"status": "uploaded"
}/v1/videos/:idRetrieve a video, its analysis result, and comments.
Response
{
"id": "v_a1b2",
"status": "analyzed",
"pose_score": 86,
"comments": [ { "author": "FormIQ AI", "text": "Elbow flare at 0:12" } ]
}/v1/videos/:idUpdate title, sport, or notes.
Response
{ "ok": true }/v1/videos/:idPermanently delete a video.
Response
{ "ok": true }Pose Analysis
/v1/videos/:id/analyzeTrigger AI pose analysis (idempotent).
Response
{
"job_id": "job_x9",
"estimated_seconds": 12
}/v1/videos/:id/poseFetch frame-by-frame keypoints (17 joints).
Response
{
"fps": 30,
"frames": [ { "t": 0.033, "joints": [ /* 17 x [x,y,conf] */ ] } ]
}Coaches & Bookings
/v1/coachesList coaches with filters (?sport, ?min_rating).
Response
{ "data": [ { "id": "c1", "name": "Coach Maya Lin", "rating": 4.9 } ] }/v1/bookingsRequest a session with a coach.
Request
{ "coach_id": "c1", "date": "2026-05-04T17:00:00Z", "notes": "Form check" }Response
{ "id": "b_42", "status": "pending" }/v1/bookings/:idConfirm, complete, or cancel a booking.
Request
{ "status": "confirmed" }Response
{ "ok": true }Start building with FormIQ
Production-grade APIs, signed uploads, and pose data out of the box.