TestUtopia
SolutionsPricingAboutContact
Help Center
  • Getting started

Assessments

  • Creating assessments
  • Inviting candidates
  • Proctoring
  • Reviewing results

Questions

  • Question types
  • Multiple-choice questions
  • Essay questions
  • Code questions
  • Test case format

Library

  • The Library
  • Importing and publishing

Interviews

  • Managing interviews
  • Live interviews
  • Interview questions
  • Scorecards
  • Interview templates

AI Assessments

  • AI Assessments
  • Templates
  • The question pool
  • Reading the report

Streams

  • Streams
  • Enrolling students
  • Stream tests
  • Stream results

Training

  • Training & Certification
  • Participants
  • Training tasks
  • Certificates and evidence

Account & billing

  • Team and roles
  • Plans and billing
  • Account and security

For candidates

  • Before you start
  • What is recorded
  • Coding questions
  • If something goes wrong
  • After you submit
  • Your data

Developers

  • REST API
  • Webhooks
  • Greenhouse
  • SSO and SCIM

Cannot find what you need?

Contact support
  1. Help Center
  2. /
  3. Developers

REST API

A versioned HTTP API over the same data the dashboard uses. Available on Professional and above.

API reference

Every endpoint, parameter and response shape, generated from the live OpenAPI specification.

Open the referenceopenapi.yaml

The reference above is generated from the live OpenAPI specification, so it always matches what the server actually accepts. You can also point a code generator at the raw spec.

Authentication

Every request carries an API key as a bearer token:

Authorization: Bearer tu_live_xxxxxxxxxxxx

Keys come in two flavours, distinguished by their prefix: tu_live_ and tu_test_. Create them under Integrations → API keys in the dashboard.

The full key is shown exactly once, at creation. We store only a hash, so we cannot show it to you again and cannot recover it. If you lose it, revoke the key and issue another.

Scopes

A key carries an explicit list of scopes, and a request outside them is refused:

ScopeGrants
tests:read / tests:writeAssessments and their questions
attempts:read / attempts:writeCandidate attempts and results
candidates:read / candidates:writeCandidate records
interviews:read / interviews:writeInterviews
webhooks:manageCreating and managing webhook endpoints
*Everything

Issue the narrowest set that works. A key with * in a CI job is a key that can delete your assessments if that job is ever compromised.

Versioning

The version is in the path — /api/v1/.... We do not use date-pinned version headers.

A breaking change means a new path prefix, not a silent change to v1. Adding a field to a response is not breaking, so parse defensively and ignore what you do not recognise.

Expiry and rotation

Keys can be given an expiry date, and rotating one is: create the new key, deploy it, then revoke the old. Both work during the overlap, so there is no window where your integration is down.

last_used_at on each key tells you whether anything is still using it before you revoke.

Errors

Errors return a JSON body with an error field and a conventional status code. 402 specifically means the feature requires a higher plan — not that a payment failed.

Was this helpful?
NextWebhooks
TestUtopia

Advanced technical assessment engine designed for high-precision engineering teams. Curating talent through rigorous data-driven evaluation.

Solutions

  • Solutions
  • Pricing
  • Features

Company

  • About

Support

  • Help Center
  • Contact support

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Security
  • Trust Center
Test Utopia Ltd · Razsadnika-Konyiovitsa, Bl. 22, fl. 6, ap. 38, Sofia, 1330, Bulgaria
Reg. No.: 207409973|VAT: BG207409973
[email protected]|+359 886 363 248

© 2026 Test Utopia Ltd. All rights reserved.