New project from URL
const url = 'https://testomato.com/api/project/create?url=https%3A%2F%2Fwww.example.com&addPresetChecks=false&checkInterval=5%20minutes';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/create?url=https%3A%2F%2Fwww.example.com&addPresetChecks=false&checkInterval=5%20minutes' \ --header 'Authorization: Bearer <token>'Same operation as POST /project/create, with the parameters in the query
string instead of a JSON body. Handy for a quick call from a browser or
curl. aiSuggestions is body-only and therefore unavailable here.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”URL to be checked
Example
https://www.example.comWhether to create a preset project (true) or an empty one (false).
How often the checks run. Omit to use the subscription default.
Responses
Section titled “Responses”Project was successfully created.
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
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}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}You have reached the project limit of your subscription.
object
Example
{ "message": "You have reached the project limit of your subscription limit. Please upgrade your subscription before adding more projects."}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}The supplied URL is invalid.
object
Example
{ "message": "We're sorry! The URL https://url seems to be invalid."}Missing mandatory parameter “url”
object
Example
{ "message": "Missing mandatory parameter \"url\""}