Splunk Observability Cloud Synthetics HTTP tests
API for creating, updating, retrieving, and deleting Synthetics HTTP tests.
API for creating, updating, retrieving, and deleting Synthetics HTTP tests.
openapi: 3.0.3
info:
title: Splunk Observability Cloud — Synthetics HTTP tests
version: 1.0.1
description: 'API for creating, updating, retrieving, and deleting Synthetics HTTP tests.
Requirements
You must have an organization access token with the API permission or a session token to use the API.
You have to have the Splunk Observability Cloud admin or power role to use the POST /tests/http/try_now, POST /tests/http/validate,
PUT /tests/http/{id}/validate, POST /tests/http, PUT /tests/http/{id}, and DELETE /tests/http/{id} operations.
You have to have the Splunk Observability Cloud admin, power, or read_only role to use the GET /tests/http/{id} operation.'
x-provenance:
method: reconstructed
authored_by: Splunk (content) / API Evangelist (assembly)
reconstructed_by: API Evangelist
reconstructed_on: '2026-08-19'
first_party: false
provider_published: false
note: Splunk's own OpenAPI objects, extracted from the React Server Component payload embedded in each of the 48 API reference
pages at dev.splunk.com. The operations and schemas are Splunk's; the assembly into standalone documents is API Evangelist's.
Splunk serves no fetchable spec file — dev.splunk.com answers 200 with an identical 6,638-byte shell for every asset
path, including invented control paths — so this is NOT first-party publication and is not graded as such.
x-evidence:
- type: source
url: https://dev.splunk.com/observability/reference/
- type: source
url: https://dev.splunk.com/observability/docs/apibasics/api_list/
servers:
- url: https://api.{REALM}.observability.splunkcloud.com/v2/synthetics
description: Endpoint URL
variables:
REALM:
default: us0
description: Splunk Observability Cloud realm the organization is provisioned in (for example us0, us1, eu0, jp0, au0).
security:
- SessionToken: []
components:
securitySchemes:
SessionToken:
type: apiKey
in: header
name: X-SF-Token
description: Splunk Observability Cloud session token or org access token.
paths:
/tests/http:
post:
summary: createHttpTest
description: 'Creates a new HTTP test, based on the specifications in the request body.
Requirements
You must have an organization access token with the API permission or a session token to use the API.
You need the Splunk Observability Cloud admin or power role.'
parameters:
- name: Content-Type
in: header
description: Format of the request body. Always "application/json".
required: true
schema:
type: string
- name: X-SF-TOKEN
in: header
description: Authentication token.
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
test:
type: object
properties:
name:
type: string
example: My HTTP test
automaticRetries:
type: integer
default: 0
example: 1
description: Automatically retry if the run fails
frequency:
type: integer
format: int32
example: 5
title: Frequency
description: How often to run your test.
schedulingStrategy:
type: string
example: round_robin
title: SchedulingStrategy
description: 'Type of scheduling strategy. This can only be:
round_robin
concurrent'
locationIds:
type: array
items:
type: string
example:
- aws-us-east-1
title: LocationIds
description: An array of location IDs where the test runs.
authentication:
type: object
properties:
username:
type: string
example: myuser
password:
type: string
example: password123
title: Authentication
url:
type: string
example: https://splunk.com
description: URL to test
active:
type: boolean
example: true
customProperties:
type: array
items:
type: object
required:
- key
- value
properties:
key:
type: string
example: Env
value:
type: string
example: production
title: CustomProperties
description: An array of custom properties. The section Custom Properties Criteria lists the requirements
for custom property names and values.
verifyCertificates:
type: boolean
example: true
requestMethod:
type: string
example: POST
title: RequestMethod
description: 'Must be one of the following:
GET
POST
PUT
PATCH
DELETE
HEAD
OPTIONS'
body:
type: string
example: '''{"alert_name":"the service is
down","url":"https://foo.com/bar"}''
'
title: Body
validations:
type: array
items:
anyOf:
- type: object
properties:
type:
type: string
example: assert_numeric
description: 'Type of assertion. Possible values for this are:
assert_string
assert_numeric'
actual:
type: string
example: '{{response.code}}'
description: 'The actual value to validate. This can be any string, a variable, or a metric
value. Valid options include:
{{response.body}}
{{response.code}}
{{response.first_byte_time}}
{{response.body_size}}
{{response.dns_time}}
{{response.response_time}}
{{headers.<headerName>}}'
expected:
type: string
example: 200
description: What you expect the variable to be.
comparator:
type: string
example: equals
description: 'Comparator between the actual value and the expected value. Must be
one of the following depending on the type:
For assert_string:
is_empty
is_not_empty
contains
does_not_contain
equals
does_not_equal
matches
does_not_match
For assert_numeric:
is_less_than
is_less_than_or_equal_to
equals
does_not_equal
is_greater_than
is_greater_than_or_equal_to'
title: ValidationAssert
description: Validation step to assert response value, response header, or response body.
userAgent:
type: string
example: Mozilla/5.0 (iPhone13,2; U; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML,
like Gecko) Version/10.0 Mobile/15E148 Safari/602.1
title: UserAgent
description: Configure the User-Agent HTTP header
port:
type: integer
format: int32
minimum: 0
maximum: 65535
nullable: true
example: 3000
title: PortSchema
description: Port number from 0-65535. Can be null.
certificateId:
type: integer
format: int64
example: 1
nullable: true
title: CertificateId
description: The unique ID of the client certificate.
title: HttpTestValidateRequest
description: Request body to validate HTTP tests.
examples:
example:
value:
test:
active: true
authentication:
password: password123
username: myuser
automaticRetries: 1
body: '''{"alert_name":"the service is
down","url":"https://foo.com/bar"}''
'
certificateId: 1
customProperties:
- key: Env
value: production
frequency: 5
locationIds:
- aws-us-east-1
name: My HTTP test
port: 3000
requestMethod: POST
schedulingStrategy: round_robin
url: https://splunk.com
userAgent: Mozilla/5.0 (iPhone13,2; U; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML,
like Gecko) Version/10.0 Mobile/15E148 Safari/602.1
validations:
- actual: '{{response.code}}'
comparator: equals
expected: 200
type: assert_numeric
verifyCertificates: true
responses:
'201':
description: HTTP 201 response
content:
application/json:
schema:
properties:
test:
type: object
properties:
id:
type: integer
format: int32
example: 1
name:
type: string
example: My HTTP test
active:
type: boolean
example: true
automaticRetries:
type: integer
default: 0
example: 1
description: Automatically retry if the run fails
frequency:
type: integer
format: int32
example: 5
title: Frequency
description: How often to run your test.
schedulingStrategy:
type: string
example: round_robin
title: SchedulingStrategy
description: 'Type of scheduling strategy. This can only be:
round_robin
concurrent'
createdAt:
type: string
readOnly: true
example: '2022-09-14T14:35:37.801Z'
title: CreatedAt
description: 'Timestamp of when the test was last updated, in UTC.
This field is read_only, and the system always sets the value.'
createdBy:
type: string
readOnly: true
example: abcdefgh1234
title: CreatedBy
description: 'Member ID of who created the test.
This field is read-only, and the system always sets the value.'
updatedAt:
type: string
readOnly: true
example: '2022-09-14T14:35:38.099Z'
title: UpdatedAt
description: 'Timestamp of when the test was last updated, in UTC.
This field is read_only, and the system always sets the value.'
updatedBy:
type: string
readOnly: true
example: abcdefgh1234
title: UpdatedBy
description: 'Member ID of who last updated the test.
This field is read-only, and the system always sets the value.'
locationIds:
type: array
items:
type: string
example:
- aws-us-east-1
title: LocationIds
description: An array of location IDs where the test runs.
authentication:
type: object
properties:
username:
type: string
example: myuser
password:
type: string
example: password123
title: Authentication
type:
type: string
example: http
url:
type: string
example: https://splunk.com
customProperties:
type: array
items:
type: object
required:
- key
- value
properties:
key:
type: string
example: Env
value:
type: string
example: production
title: CustomProperties
description: An array of custom properties. The section Custom Properties Criteria lists the requirements
for custom property names and values.
verifyCertificates:
type: boolean
example: true
requestMethod:
type: string
example: POST
title: RequestMethod
description: 'Must be one of the following:
GET
POST
PUT
PATCH
DELETE
HEAD
OPTIONS'
body:
type: string
example: '''{"alert_name":"the service is
down","url":"https://foo.com/bar"}''
'
title: Body
validations:
type: array
items:
anyOf:
- type: object
properties:
type:
type: string
example: assert_numeric
description: 'Type of assertion. Possible values for this are:
assert_string
assert_numeric'
actual:
type: string
example: '{{response.code}}'
description: 'The actual value to validate. This can be any string, a variable, or a metric
value. Valid options include:
{{response.body}}
{{response.code}}
{{response.first_byte_time}}
{{response.body_size}}
{{response.dns_time}}
{{response.response_time}}
{{headers.<headerName>}}'
expected:
type: string
example: 200
description: What you expect the variable to be.
comparator:
type: string
example: equals
description: 'Comparator between the actual value and the expected value. Must be
one of the following depending on the type:
For assert_string:
is_empty
is_not_empty
contains
does_not_contain
equals
does_not_equal
matches
does_not_match
For assert_numeric:
is_less_than
is_less_than_or_equal_to
equals
does_not_equal
is_greater_than
is_greater_than_or_equal_to'
title: ValidationAssert
description: Validation step to assert response value, response header, or response body.
userAgent:
type: string
example: Mozilla/5.0 (iPhone13,2; U; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML,
like Gecko) Version/10.0 Mobile/15E148 Safari/602.1
title: UserAgent
description: Configure the User-Agent HTTP header
lastRunStatus:
type: string
example: success
enum:
- pending
- success
- failed
title: LastRunStatus
description: Status of the last test run.
lastRunAt:
type: string
readOnly: true
example: '2022-09-14T14:36:45.156Z'
title: LastRunAt
description: 'Timestamp of when the test was last run, in UTC.
This field is read-only, and the system always sets the value.'
port:
type: integer
format: int32
minimum: 0
maximum: 65535
nullable: true
example: 3000
title: PortSchema
description: Port number from 0-65535. Can be null.
certificateId:
type: integer
format: int64
example: 1
nullable: true
title: CertificateId
description: The unique ID of the client certificate.
type: object
examples:
example:
value:
test:
active: true
authentication:
password: password123
username: myuser
automaticRetries: 1
body: '''{"alert_name":"the service is
down","url":"https://foo.com/bar"}''
'
certificateId: 1
createdAt: '2022-09-14T14:35:37.801Z'
createdBy: abcdefgh1234
customProperties:
- key: Env
value: production
frequency: 5
id: 1
lastRunAt: '2022-09-14T14:36:45.156Z'
lastRunStatus: success
locationIds:
- aws-us-east-1
name: My HTTP test
port: 3000
requestMethod: POST
schedulingStrategy: round_robin
type: http
updatedAt: '2022-09-14T14:35:38.099Z'
updatedBy: abcdefgh1234
url: https://splunk.com
userAgent: Mozilla/5.0 (iPhone13,2; U; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML,
like Gecko) Version/10.0 Mobile/15E148 Safari/602.1
validations:
- actual: '{{response.code}}'
comparator: equals
expected: 200
type: assert_numeric
verifyCertificates: true
'422':
description: HTTP 422 response
content:
application/json:
schema:
properties:
code:
type: string
example: unprocessable_entity
message:
type: string
example: Could not create an HTTP test
details:
type: object
properties:
device:
type: array
items:
type: string
example: must exist
description: 'This is a dynamic schema that consists of:
"fieldName": ["reason"]'
type: object
examples:
example:
value:
code: unprocessable_entity
details:
device:
- must exist
message: Could not create an HTTP test
security:
- SessionToken: []
tags:
- Synthetics HTTP tests
/tests/http/{id}:
get:
summary: getSingleHttpTest
description: 'Retrieves a single HTTP test.
Requirements
You must have an organization access token with the API permission or a session token to use the API.
You need the Splunk Observability Cloud admin, power, or read_only role.'
parameters:
- name: id
in: path
description: The ID of an HTTP test to retrieve
required: true
schema:
type: string
- name: X-SF-TOKEN
in: header
description: Authentication token.
required: true
schema:
type: string
responses:
'200':
description: HTTP 200 response
content:
application/json:
schema:
type: object
properties:
test:
type: object
properties:
id:
type: integer
format: int32
example: 1
name:
type: string
example: My HTTP test
active:
type: boolean
example: true
automaticRetries:
type: integer
default: 0
example: 1
description: Automatically retry if the run fails
frequency:
type: integer
format: int32
example: 5
title: Frequency
description: How often to run your test.
schedulingStrategy:
type: string
example: round_robin
title: SchedulingStrategy
description: 'Type of scheduling strategy. This can only be:
round_robin
concurrent'
createdAt:
type: string
readOnly: true
example: '2022-09-14T14:35:37.801Z'
title: CreatedAt
description: 'Timestamp of when the test was last updated, in UTC.
This field is read_only, and the system always sets the value.'
createdBy:
type: string
readOnly: true
example: abcdefgh1234
title: CreatedBy
description: 'Member ID of who created the test.
This field is read-only, and the system always sets the value.'
updatedAt:
type: string
readOnly: true
example: '2022-09-14T14:35:38.099Z'
title: UpdatedAt
description: 'Timestamp of when the test was last updated, in UTC.
This field is read_only, and the system always sets the value.'
updatedBy:
type: string
readOnly: true
example: abcdefgh1234
title: UpdatedBy
description: 'Member ID of who last updated the test.
This field is read-only, and the system always sets the value.'
locationIds:
type: array
items:
type: string
example:
- aws-us-east-1
title: LocationIds
description: An array of location IDs where the test runs.
authentication:
type: object
properties:
username:
type: string
example: myuser
password:
type: string
example: password123
title: Authentication
type:
type: string
example: http
url:
type: string
example: https://splunk.com
customProperties:
type: array
items:
type: object
required:
- key
- value
properties:
key:
type: string
example: Env
value:
type: string
example: production
title: CustomProperties
description: An array of custom properties. The section Custom Properties Criteria lists the requirements
for custom property names and values.
verifyCertificates:
type: boolean
example: true
requestMethod:
type: string
example: POST
title: RequestMethod
description: 'Must be one of the following:
GET
POST
PUT
PATCH
DELETE
HEAD
OPTIONS'
body:
type: string
example: '''{"alert_name":"the service is
down","url":"https://foo.com/bar"}''
'
title: Body
validations:
type: array
items:
anyOf:
- type: object
properties:
type:
type: string
example: assert_numeric
description: 'Type of assertion. Possible values for this are:
assert_string
assert_numeric'
actual:
type: string
example: '{{response.code}}'
description: 'The actual value to validate. This can be any string, a variable, or a metric
value. Valid options include:
{{response.body}}
{{response.code}}
{{response.first_byte_time}}
{{response.body_size}}
{{response.dns_time}}
{{response.response_time}}
{{headers.<headerName>}}'
expected:
type: string
example: 200
description: What you expect the variable to be.
comparator:
type: string
example: equals
description: 'Comparator between the actual value and the expected value. Must be
one of the following depending on the type:
For assert_string:
# --- truncated at 32 KB (83 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/splunk-observability/refs/heads/main/openapi/splunk-observability-synthetics-http-tests-openapi.yml