- What is TestInvite?
- Build Your First Test
- Run Your First Assessment
- Taking the Assessment
- Viewing the Results
- Question Bank Overview
- Common Question Features
- Scoring
- Question Types
- Question Authoring
- Browsing Questions
- Content Blocks
- Media Library
- Metadata Rules & Schema
- Roles & Access
- Tests Overview
- My Tests
- Creating a Test
- The Test Editor
- Test Settings
- Sections & Pages
- Adding Questions
- Page Builders
- Test Profile
- Reporting
- Test Papers
- Analytics
- Publishing a Test
- Test Library
- Marketplace
- Tasks Overview
- Creating a Task
- Task Dashboard
- Steps
- Task Settings
- Candidates
- Test Sessions
- Sent Mails
- Proctoring
- Analytics
- Analytics Overview
- Test Analytics
- Question Analytics
- Per-Question Analytics
- Results Explorer
- Segment Analysis
REST API Reference
The conventions shared by every REST API endpoint — authentication, the basic/detailed response toggle, and how List, Fetch, and Search differ — plus where to find each resource's specific endpoints.
Every REST API endpoint shares the same base URL, the same authentication, and one of a small number of repeating patterns. Learn these once here, and each resource page below only needs to cover what's actually specific to it.
Base URL & Authentication
Every endpoint is under https://www.testinvite.com/api/integration/rest/v1. Every request needs an Authorization header set to your access key's authorization token — see Enabling the API for where to get one:
GET /api/integration/rest/hello-world— a no-op endpoint to verify your token works before building anything real against it.
basic vs. detailed
Every List, Fetch, and Search endpoint accepts a mode query parameter: basic (default) or detailed. Detailed always returns everything basic does, plus the resource's full fields — request it only when you need those extra fields, since it's a heavier response.
List, Fetch, and Search
Every resource offers the same three ways to read it:
- List —
GETthe resource's root path. Simple filters go in the query string; returns a paginated array. - Fetch one —
GET .../:id. No filters, justmode; returns a single object. - Search —
POST .../filter. Richer filters go in the JSON body (arrays, booleans, multiple conditions, all AND-combined) — use this whenever a query string can't express what you need. Same paginated response shape as List.
Pagination — Two Different Models
Most List and Search endpoints use offset pagination: pass page and limit (default 10) query parameters, and the response includes { totalItems, totalPages, currentPage, limit, next, previous }.
Searching Test Sessions & Results is the one exception — it uses cursor pagination instead: pass limit and, for subsequent pages, lastDocId from the previous response. The response includes { limit, lastDocId, next }, where next is a ready-to-use query string for the following page. This is called out again on that endpoint's own page — it's easy to assume every endpoint paginates the same way and get a confusing result if you don't check.
Expand — Optional Extra Fields
Users and Test Sessions & Results additionally offer an expand endpoint: POST .../:id/expand with a body of { expand: [...] } naming which optional fields to include. These are fields expensive or unusual enough that they're never included even in detailed mode — you opt into exactly the ones you need.
In This Section
- Tasks
- Tests
- Users
- Candidates
- Test Sessions & Results
- Integration Workflow — how it all fits together end to end
- Webhooks & Callbacks
In this section
The REST API uses standard HTTP status codes — 2xx for success, 4xx when the request itself is the problem, 5xx when TestInvite's the problem.
The TestInvite REST API Postman collection includes a ready request for every endpoint documented here, with example bodies, query parameters, and placeholder values like <task-id> and <your-authorization-token> — swap those for your own values and adjust the body to match what you actually need.