Get project
const url = 'https://testomato.com/api/project/5e9602e7a39e5a46428b457f';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://testomato.com/api/project/5e9602e7a39e5a46428b457f \ --header 'Authorization: Bearer <token>'Retrieve project by ID
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”A unique project ID
Example
5e9602e7a39e5a46428b457fResponses
Section titled “Responses”Successful operation
object
Project ID
Project title
Project base URL
Period of test checking — false means tests are not run automatically.
Uptime URL
Uptime period in seconds - false means uptime is disabled
ApiKey that can be used for the project operations
Identification of the project owner.
Project check location
Date and time of project creation
User agent
Cumulated project timeout in seconds
Bulk request delay in milliseconds
Array of user IDs with access to the project
Last known check status of the project. null until the first run.
Derived state of the TLS certificate:
ok— valid, and more days left thansslAlertPeriodsoon— valid, but expiring withinsslAlertPeriodexpired— no days leftnossl— the project URL is nothttps://noinfo— not checked yet
Certificate expiry in ISO 8601. null when there is nothing to report.
Days until the certificate expires. Absent until the first SSL check ran.
How many days before expiry the certificate counts as expiring soon.
Whether Testomato checks that the HTTP version redirects to HTTPS.
Result of the last HTTPS redirect check. null until it first ran.
URL the HTTP version ended on, after following redirects.
When the HTTPS redirect was last checked, in ISO 8601.
Whether browser push notifications are enabled for this project.
Whether the security panel (including the Shodan network scan) is enabled.
Whether the site was detected as WordPress. null before detection ran.
Project name was replaced by Project title
Project permissions for current user
object
Can the current user view results?
Can the current user run checks?
Can the current user edit tests?
Can the current user edit project settings?
Can the current user manage other users?
Can the current user view the API key?
Can the current user leave the project?
Example
{ "id": "50a9f72f14db3be812000233", "url": "https://testomato.com", "period": "5 minutes", "uptimeEnabled": false, "apiKey": 123456, "location": "eu", "checkDefaultErrors": true, "userAgent": "Testomatobot/1.0 (Linux x86_64; +https://testomato.com/bot) minicrawler/5.2.7", "timeout": 3, "delay": 50, "status": "ok", "sslStatus": "ok", "sslExpiration": "2026-12-31T23:59:59+00:00", "sslDaysLeft": 47, "sslAlertPeriod": 14, "httpsRedirectEnabled": true, "httpsRedirectStatus": "ok", "httpsRedirectFinalUrl": "https://testomato.com/", "httpsRedirectCheckedAt": "2026-09-08T06:29:38+00:00", "webPushEnabled": false, "securityMonitoringEnabled": false, "isWordPress": true, "permissions": { "manageUsers": true, "apiKey": true, "leave": true }}The API token is missing, malformed or expired. Request a new one from
POST /api/authenticate.
object
Error message text
Error code number
Example
{ "message": "Access denied! Please log in to access this resource.", "code": 401, "ok": false, "error": true}The token is valid but the operation is not allowed. Two distinct causes:
- the subscription plan does not include API access — every endpoint returns this, regardless of the resource
- the account lacks the required role on the project — reading needs
read, changing checks needseditTests, and so on. See Project permissions.
object
Error message text
Error code number
Example
{ "message": "Sorry! Your current plan does not support access to Testomato API.", "code": 403, "ok": false, "error": true}Object not found error
object
Error message text
Error code number
Example
{ "message": "Object not found", "code": 404, "ok": false, "error": true}