Skip to content

New project from URL

GET
/project/create
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.

url
required
string

URL to be checked

Example
https://www.example.com
addPresetChecks
boolean

Whether to create a preset project (true) or an empty one (false).

checkInterval
string
Allowed values: 5 minutes 30 minutes 1 hour 8 hours 1 day 7 days

How often the checks run. Omit to use the subscription default.

Project was successfully created.

Media typeapplication/json
object
id

Project ID

string
title

Project title

string
url

Project base URL

string
period

Period of test checking — false means tests are not run automatically.

string
default: 5 minutes
Allowed values: 5 minutes 30 minutes 1 hour 8 hours 1 day 7 days
uptimeUrl

Uptime URL

string
uptimeEnabled

Uptime period in seconds - false means uptime is disabled

string
Allowed values: 15 30 60
apiKey

ApiKey that can be used for the project operations

string
payerId

Identification of the project owner.

integer
location

Project check location

string
Allowed values: eu de gb ca us tx dc sg hk
checkDefaultErrors
boolean
default: true
created

Date and time of project creation

string format: date-time
userAgent

User agent

string
default: Testomatobot/1.0 (Linux x86_64; +https://testomato.com/bot) minicrawler/5.2.7
timeout

Cumulated project timeout in seconds

integer
default: 3
delay

Bulk request delay in milliseconds

integer format: int64
default: 50
userIds

Array of user IDs with access to the project

Array<integer>
status

Last known check status of the project. null until the first run.

string
nullable
sslStatus

Derived state of the TLS certificate:

  • ok — valid, and more days left than sslAlertPeriod
  • soon — valid, but expiring within sslAlertPeriod
  • expired — no days left
  • nossl — the project URL is not https://
  • noinfo — not checked yet
string
Allowed values: ok soon expired nossl noinfo
sslExpiration

Certificate expiry in ISO 8601. null when there is nothing to report.

string format: date-time
nullable
sslDaysLeft

Days until the certificate expires. Absent until the first SSL check ran.

integer
sslAlertPeriod

How many days before expiry the certificate counts as expiring soon.

integer
httpsRedirectEnabled

Whether Testomato checks that the HTTP version redirects to HTTPS.

boolean
httpsRedirectStatus

Result of the last HTTPS redirect check. null until it first ran.

string
nullable
Allowed values: ok failed unreachable
httpsRedirectFinalUrl

URL the HTTP version ended on, after following redirects.

string
nullable
httpsRedirectCheckedAt

When the HTTPS redirect was last checked, in ISO 8601.

string format: date-time
nullable
webPushEnabled

Whether browser push notifications are enabled for this project.

boolean
securityMonitoringEnabled

Whether the security panel (including the Shodan network scan) is enabled.

boolean
isWordPress

Whether the site was detected as WordPress. null before detection ran.

boolean
nullable
name

Project name was replaced by Project title

string
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.

Media typeapplication/json
object
message

Error message text

string
default: Access denied! Please log in to access this resource.
code

Error code number

integer
default: 401
ok
boolean
error
boolean
default: true
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.

Media typeapplication/json
object
message
string
default: You have reached the project limit of your subscription limit. Please upgrade your subscription before adding more projects.
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 needs editTests, and so on. See Project permissions.
Media typeapplication/json
object
message

Error message text

string
default: Sorry! Your current plan does not support access to Testomato API.
code

Error code number

integer
default: 403
ok
boolean
error
boolean
default: true
Example
{
"message": "Sorry! Your current plan does not support access to Testomato API.",
"code": 403,
"ok": false,
"error": true
}

The supplied URL is invalid.

Media typeapplication/json
object
message
string
default: We're sorry! The URL https://url seems to be invalid.
Example
{
"message": "We're sorry! The URL https://url seems to be invalid."
}

Missing mandatory parameter “url”

Media typeapplication/json
object
message
string
default: Missing mandatory parameter "url"
Example
{
"message": "Missing mandatory parameter \"url\""
}