v1 · Production-ready

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

Quick start
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

POST/v1/auth/session

Exchange credentials for a session token.

Request

{
  "email": "athlete@formiq.app",
  "password": "••••••••"
}

Response

{
  "token": "fiq_sess_••••",
  "expires_in": 3600,
  "user": { "id": "u_01", "role": "athlete" }
}
POST/v1/auth/logout

Revoke the current session token.

Response

{ "ok": true }

Videos

POST/v1/videos

Create 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"
}
GET/v1/videos/:id

Retrieve 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" } ]
}
PATCH/v1/videos/:id

Update title, sport, or notes.

Response

{ "ok": true }
DELETE/v1/videos/:id

Permanently delete a video.

Response

{ "ok": true }

Pose Analysis

POST/v1/videos/:id/analyze

Trigger AI pose analysis (idempotent).

Response

{
  "job_id": "job_x9",
  "estimated_seconds": 12
}
GET/v1/videos/:id/pose

Fetch frame-by-frame keypoints (17 joints).

Response

{
  "fps": 30,
  "frames": [ { "t": 0.033, "joints": [ /* 17 x [x,y,conf] */ ] } ]
}

Coaches & Bookings

GET/v1/coaches

List coaches with filters (?sport, ?min_rating).

Response

{ "data": [ { "id": "c1", "name": "Coach Maya Lin", "rating": 4.9 } ] }
POST/v1/bookings

Request a session with a coach.

Request

{ "coach_id": "c1", "date": "2026-05-04T17:00:00Z", "notes": "Form check" }

Response

{ "id": "b_42", "status": "pending" }
PATCH/v1/bookings/:id

Confirm, 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.

Open the app