---
title: "Get an API test result"
method: GET
path: "/api/v1/synthetics/tests/{public_id}/results/{result_id}"
tags: ["Synthetics"]
---

# Get an API test result

`GET /api/v1/synthetics/tests/{public_id}/results/{result_id}`

## Request

- Base URL: `https://api.datadoghq.com`
- URL: `https://api.datadoghq.com/api/v1/synthetics/tests/{public_id}/results/{result_id}`
- Auth: one of:
  - API key in header `DD-API-KEY` and API key in header `DD-APPLICATION-KEY`
  - OAuth 2
    - Authorization code: `/oauth2/v1/authorize`
    - Token URL: `/oauth2/v1/token` scopes: `synthetics_read`

Get a specific full result from a given Synthetic API test.

## Path parameters

- `public_id` string, required
- `result_id` string, required

## Response `200`

OK

- SyntheticsAPITestResultFull: Object returned describing a API test result.
  - `check` SyntheticsAPITestResultFullCheck: Object describing the API test configuration.
    - `config` SyntheticsTestConfig, required: Configuration object for a Synthetic test.
      - `assertions` SyntheticsAssertion[]: Array of assertions used for the test. Required for single API tests.
        - union: Object describing the assertions type, their associated operator, which property they apply, and upon which target.
          - SyntheticsAssertionTarget: An assertion which uses a simple target.
            - `operator` 'contains' | 'doesNotContain' | 'is' | 'isNot' | 'lessThan' | 'lessThanOrEqual' | 'moreThan' | 'moreThanOrEqual' | 'matches' | 'doesNotMatch' | 'validates' | 'isInMoreThan' | 'isInLessThan' | 'doesNotExist' | 'isUndefined', required: Assertion operator to apply.
            - `property` string: The associated assertion property.
            - `target` union, required: Value used by the operator in assertions. Can be either a number or string.
              - …
            - `timingsScope` 'all' | 'withoutDNS': Timings scope for response time assertions.
            - `type` 'body' | 'header' | 'statusCode' | 'certificate' | 'responseTime' | 'property' | 'recordEvery' | 'recordSome' | 'tlsVersion' | 'minTlsVersion' | 'latency' | 'packetLossPercentage' | 'packetsReceived' | 'networkHop' | 'receivedMessage' | 'grpcHealthcheckStatus' | 'grpcMetadata' | 'grpcProto' | 'connection' | 'multiNetworkHop' | 'jitter' | 'mcpToolNameLength' | 'mcpToolCount', required: Type of the assertion.
          - SyntheticsAssertionBodyHashTarget: An assertion which targets body hash.
            - `operator` 'md5' | 'sha1' | 'sha256', required: Assertion operator to apply.
            - `target` union, required: Value used by the operator in assertions. Can be either a number or string.
              - …
            - `type` 'bodyHash', required: Type of the assertion.
          - SyntheticsAssertionJSONPathTarget: An assertion for the `validatesJSONPath` operator.
            - `operator` 'validatesJSONPath', required: Assertion operator to apply.
            - `property` string: The associated assertion property.
            - `target` SyntheticsAssertionJSONPathTargetTarget: Composed target for `validatesJSONPath` operator.
              - …
            - `type` 'body' | 'header' | 'statusCode' | 'certificate' | 'responseTime' | 'property' | 'recordEvery' | 'recordSome' | 'tlsVersion' | 'minTlsVersion' | 'latency' | 'packetLossPercentage' | 'packetsReceived' | 'networkHop' | 'receivedMessage' | 'grpcHealthcheckStatus' | 'grpcMetadata' | 'grpcProto' | 'connection' | 'multiNetworkHop' | 'jitter' | 'mcpToolNameLength' | 'mcpToolCount', required: Type of the assertion.
          - SyntheticsAssertionJSONSchemaTarget: An assertion for the `validatesJSONSchema` operator.
            - `operator` 'validatesJSONSchema', required: Assertion operator to apply.
            - `target` SyntheticsAssertionJSONSchemaTargetTarget: Composed target for `validatesJSONSchema` operator.
              - …
            - `type` 'body' | 'header' | 'statusCode' | 'certificate' | 'responseTime' | 'property' | 'recordEvery' | 'recordSome' | 'tlsVersion' | 'minTlsVersion' | 'latency' | 'packetLossPercentage' | 'packetsReceived' | 'networkHop' | 'receivedMessage' | 'grpcHealthcheckStatus' | 'grpcMetadata' | 'grpcProto' | 'connection' | 'multiNetworkHop' | 'jitter' | 'mcpToolNameLength' | 'mcpToolCount', required: Type of the assertion.
          - SyntheticsAssertionXPathTarget: An assertion for the `validatesXPath` operator.
            - `operator` 'validatesXPath', required: Assertion operator to apply.
            - `property` string: The associated assertion property.
            - `target` SyntheticsAssertionXPathTargetTarget: Composed target for `validatesXPath` operator.
              - …
            - `type` 'body' | 'header' | 'statusCode' | 'certificate' | 'responseTime' | 'property' | 'recordEvery' | 'recordSome' | 'tlsVersion' | 'minTlsVersion' | 'latency' | 'packetLossPercentage' | 'packetsReceived' | 'networkHop' | 'receivedMessage' | 'grpcHealthcheckStatus' | 'grpcMetadata' | 'grpcProto' | 'connection' | 'multiNetworkHop' | 'jitter' | 'mcpToolNameLength' | 'mcpToolCount', required: Type of the assertion.
          - SyntheticsAssertionJavascript: A JavaScript assertion.
            - `code` string, required: The JavaScript code that performs the assertions.
            - `type` 'javascript', required: Type of the assertion.
          - SyntheticsAssertionMCPServerCapabilitiesTarget: An assertion that checks that an MCP server advertises the expected capabilities.
            - `operator` 'contains' | 'doesNotContain' | 'is' | 'isNot' | 'lessThan' | 'lessThanOrEqual' | 'moreThan' | 'moreThanOrEqual' | 'matches' | 'doesNotMatch' | 'validates' | 'isInMoreThan' | 'isInLessThan' | 'doesNotExist' | 'isUndefined', required: Assertion operator to apply.
            - `target` SyntheticsMCPServerCapability[], required: List of MCP server capabilities to assert against.
            - `type` 'mcpServerCapabilities', required: Type of the assertion.
          - SyntheticsAssertionMCPRespectsSpecification: An assertion that verifies the MCP server response respects the MCP specification.
            - `type` 'mcpRespectsSpecification', required: Type of the assertion.
      - `configVariables` SyntheticsConfigVariable[]: Array of variables used for the test.
        - `example` string: Example for the variable.
        - `id` string: ID of the variable for global variables.
        - `name` string, required: Name of the variable.
        - `pattern` string: Pattern of the variable.
        - `secure` boolean: Whether the value of this variable will be obfuscated in test results. Only for config variables of type `text`.
        - `type` 'global' | 'text' | 'email', required: Type of the configuration variable.
      - `request` SyntheticsTestRequest: Object describing the Synthetic test request.
        - `allow_insecure` boolean: Allows loading insecure content for an HTTP request in a multistep test step.
        - `basicAuth` union: Object to handle basic authentication when performing the test.
          - SyntheticsBasicAuthWeb: Object to handle basic authentication when performing the test.
            - `password` string: Password to use for the basic authentication.
            - `type` 'web': The type of basic authentication to use when performing the test.
            - `username` string: Username to use for the basic authentication.
          - SyntheticsBasicAuthSigv4: Object to handle `SIGV4` authentication when performing the test.
            - `accessKey` string, required: Access key for the `SIGV4` authentication.
            - `region` string: Region for the `SIGV4` authentication.
            - `secretKey` string, required: Secret key for the `SIGV4` authentication.
            - `serviceName` string: Service name for the `SIGV4` authentication.
            - `sessionToken` string: Session token for the `SIGV4` authentication.
            - `type` 'sigv4', required: The type of authentication to use when performing the test.
          - SyntheticsBasicAuthNTLM: Object to handle `NTLM` authentication when performing the test.
            - `domain` string: Domain for the authentication to use when performing the test.
            - `password` string: Password for the authentication to use when performing the test.
            - `type` 'ntlm', required: The type of authentication to use when performing the test.
            - `username` string: Username for the authentication to use when performing the test.
            - `workstation` string: Workstation for the authentication to use when performing the test.
          - SyntheticsBasicAuthDigest: Object to handle digest authentication when performing the test.
            - `password` string, required: Password to use for the digest authentication.
            - `type` 'digest', required: The type of basic authentication to use when performing the test.
            - `username` string, required: Username to use for the digest authentication.
          - SyntheticsBasicAuthOauthClient: Object to handle `oauth client` authentication when performing the test.
            - `accessTokenUrl` string, required: Access token URL to use when performing the authentication.
            - `audience` string: Audience to use when performing the authentication.
            - `clientId` string, required: Client ID to use when performing the authentication.
            - `clientSecret` string, required: Client secret to use when performing the authentication.
            - `resource` string: Resource to use when performing the authentication.
            - `scope` string: Scope to use when performing the authentication.
            - `tokenApiAuthentication` 'header' | 'body', required: Type of token to use when performing the authentication.
            - `type` 'oauth-client', required: The type of basic authentication to use when performing the test.
          - SyntheticsBasicAuthOauthROP: Object to handle `oauth rop` authentication when performing the test.
            - `accessTokenUrl` string, required: Access token URL to use when performing the authentication.
            - `audience` string: Audience to use when performing the authentication.
            - `clientId` string: Client ID to use when performing the authentication.
            - `clientSecret` string: Client secret to use when performing the authentication.
            - `password` string, required: Password to use when performing the authentication.
            - `resource` string: Resource to use when performing the authentication.
            - `scope` string: Scope to use when performing the authentication.
            - `tokenApiAuthentication` 'header' | 'body', required: Type of token to use when performing the authentication.
            - `type` 'oauth-rop', required: The type of basic authentication to use when performing the test.
            - `username` string, required: Username to use when performing the authentication.
          - SyntheticsBasicAuthJWT: Object to handle JWT authentication when performing the test.
            - `addClaims` SyntheticsBasicAuthJWTAddClaims: Standard JWT claims to automatically inject.
              - …
            - `algorithm` 'HS256' | 'RS256' | 'ES256', required: Algorithm to use for the JWT authentication.
            - `expiresIn` integer: Token time-to-live in seconds.
            - `header` string: Custom JWT header as a JSON string.
            - `payload` string, required: JWT claims as a JSON string.
            - `secret` string, required: Signing key for the JWT authentication. Use the shared secret for `HS256` or the private key (PEM format) for `RS256` and `ES256`.
            - `tokenPrefix` string: Prefix added before the token in the `Authorization` header. Defaults to `Bearer`.
            - `type` 'jwt', required: The type of authentication to use when performing the test.
        - `body` string: Body to include in the test.
        - `bodyType` 'text/plain' | 'application/json' | 'text/xml' | 'text/html' | 'application/x-www-form-urlencoded' | 'graphql' | 'application/octet-stream' | 'multipart/form-data': Type of the request body.
        - `callType` 'healthcheck' | 'unary' | 'init' | 'tool_list' | 'tool_call': The type of call to perform. Used by gRPC steps (`healthcheck`, `unary`) and MCP steps (`init`, `tool_list`, `tool_call`). Valid values depend on the parent step's `subtype`.
        - `certificate` SyntheticsTestRequestCertificate: Client certificate to use when performing the test request.
          - `cert` SyntheticsTestRequestCertificateItem: Define a request certificate.
            - `content` string: Content of the certificate or key.
            - `filename` string: File name for the certificate or key.
            - `updatedAt` string: Date of update of the certificate or key, ISO format.
          - `key` SyntheticsTestRequestCertificateItem: Define a request certificate.
            - `content` string: Content of the certificate or key.
            - `filename` string: File name for the certificate or key.
            - `updatedAt` string: Date of update of the certificate or key, ISO format.
        - `certificateDomains` string[]: By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in `certificateDomains`.
        - `checkCertificateRevocation` boolean: Check for certificate revocation.
        - `compressedJsonDescriptor` string: A protobuf JSON descriptor that needs to be gzipped first then base64 encoded.
        - `compressedProtoFile` string: A protobuf file that needs to be gzipped first then base64 encoded.
        - `disableAiaIntermediateFetching` boolean: Disable fetching intermediate certificates from AIA.
        - `dnsServer` string: DNS server to use for DNS tests.
        - `dnsServerPort` union: DNS server port to use for DNS tests.
          - integer: Integer DNS server port number to use when performing the test.
          - string: String DNS server port number to use when performing the test. Supports templated variables.
        - `files` SyntheticsTestRequestBodyFile[]: Files to be used as part of the request in the test. Only valid if `bodyType` is `multipart/form-data`.
          - `bucketKey` string: Bucket key of the file.
          - `content` string: Content of the file.
          - `encoding` string: Encoding of the file content. The only supported value is `base64`, indicating the `content` field contains base64-encoded data.
          - `name` string: Name of the file.
          - `originalFileName` string: Original name of the file.
          - `size` integer: Size of the file.
          - `type` string: Type of the file.
        - `follow_redirects` boolean: Specifies whether or not the request follows redirects.
        - `form` object: Form to be used as part of the request in the test. Only valid if `bodyType` is `multipart/form-data`.
        - `headers` SyntheticsTestHeaders: Headers to include when performing the test.
        - `host` string: Host name to perform the test with.
        - `httpVersion` 'http1' | 'http2' | 'any': HTTP version to use for a Synthetic test.
        - `isMessageBase64Encoded` boolean: Whether the message is base64 encoded.
        - `mcpProtocolVersion` '2025-06-18': The MCP protocol version used by the step. See https://modelcontextprotocol.io/specification.
        - `message` string: Message to send for UDP or WebSocket tests.
        - `metadata` SyntheticsTestMetadata: Metadata to include when performing the gRPC test.
        - `method` string: Either the HTTP method/verb to use or a gRPC method available on the service set in the `service` field. Required if `subtype` is `HTTP` or if `subtype` is `grpc` and `callType` is `unary`.
        - `noSavingResponseBody` boolean: Determines whether or not to save the response body.
        - `numberOfPackets` integer: Number of pings to use per test.
        - `persistCookies` boolean: Persist cookies across redirects.
        - `port` union: Port to use when performing the test.
          - integer: Integer Port number to use when performing the test.
          - string: String Port number to use when performing the test. Supports templated variables.
        - `proxy` SyntheticsTestRequestProxy: The proxy to perform the test.
          - `headers` SyntheticsTestHeaders: Headers to include when performing the test.
          - `url` string, required: URL of the proxy to perform the test.
        - `query` object: Query to use for the test.
        - `servername` string: For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number.
        - `service` string: The gRPC service on which you want to perform the gRPC call.
        - `shouldTrackHops` boolean: Turns on a traceroute probe to discover all gateways along the path to the host destination.
        - `timeout` number, double: Timeout in seconds for the test.
        - `toolArgs` object: Arguments to pass to the MCP tool. Free-form object whose shape depends on the tool. Used when `callType` is `tool_call`.
        - `toolName` string: The name of the MCP tool to call. Required when `callType` is `tool_call`.
        - `url` string: URL to perform the test with.
      - `variables` SyntheticsBrowserVariable[]: Browser tests only - array of variables used for the test steps.
        - `example` string: Example for the variable.
        - `id` string: ID for the variable. Global variables require an ID.
        - `name` string, required: Name of the variable.
        - `pattern` string: Pattern of the variable.
        - `secure` boolean: Determines whether or not the browser test variable is obfuscated. Can only be used with browser variables of type `text`.
        - `type` 'element' | 'email' | 'global' | 'text', required: Type of browser test variable.
  - `check_time` number, double: When the API test was conducted.
  - `check_version` integer: Version of the API test used.
  - `probe_dc` string: Locations for which to query the API test results.
  - `result` SyntheticsAPITestResultData: Object containing results for your Synthetic API test.
    - `cert` SyntheticsSSLCertificate: Object describing the SSL certificate used for a Synthetic test.
      - `cipher` string: Cipher used for the connection.
      - `exponent` number, double: Exponent associated to the certificate.
      - `extKeyUsage` string[]: Array of extensions and details used for the certificate.
      - `fingerprint` string: MD5 digest of the DER-encoded Certificate information.
      - `fingerprint256` string: SHA-1 digest of the DER-encoded Certificate information.
      - `issuer` SyntheticsSSLCertificateIssuer: Object describing the issuer of a SSL certificate.
        - `C` string: Country Name that issued the certificate.
        - `CN` string: Common Name that issued certificate.
        - `L` string: Locality that issued the certificate.
        - `O` string: Organization that issued the certificate.
        - `OU` string: Organizational Unit that issued the certificate.
        - `ST` string: State Or Province Name that issued the certificate.
      - `modulus` string: Modulus associated to the SSL certificate private key.
      - `protocol` string: TLS protocol used for the test.
      - `serialNumber` string: Serial Number assigned by Symantec to the SSL certificate.
      - `subject` SyntheticsSSLCertificateSubject: Object describing the SSL certificate used for the test.
        - `C` string: Country Name associated with the certificate.
        - `CN` string: Common Name that associated with the certificate.
        - `L` string: Locality associated with the certificate.
        - `O` string: Organization associated with the certificate.
        - `OU` string: Organizational Unit associated with the certificate.
        - `ST` string: State Or Province Name associated with the certificate.
        - `altName` string: Subject Alternative Name associated with the certificate.
      - `validFrom` string, date-time: Date from which the SSL certificate is valid.
      - `validTo` string, date-time: Date until which the SSL certificate is valid.
    - `eventType` 'not_scheduled' | 'scheduled' | 'finished' | 'finished_with_error': Status of a Synthetic test.
    - `failure` SyntheticsApiTestResultFailure: The API test failure details.
      - `code` 'BODY_TOO_LARGE' | 'DENIED' | 'TOO_MANY_REDIRECTS' | 'AUTHENTICATION_ERROR' | 'DECRYPTION' | 'INVALID_CHAR_IN_HEADER' | 'HEADER_TOO_LARGE' | 'HEADERS_INCOMPATIBLE_CONTENT_LENGTH' | 'INVALID_REQUEST' | 'REQUIRES_UPDATE' | 'UNESCAPED_CHARACTERS_IN_REQUEST_PATH' | 'MALFORMED_RESPONSE' | 'INCORRECT_ASSERTION' | 'CONNREFUSED' | 'CONNRESET' | 'DNS' | 'HOSTUNREACH' | 'NETUNREACH' | 'TIMEOUT' | 'SSL' | 'OCSP' | 'INVALID_TEST' | 'TUNNEL' | 'WEBSOCKET' | 'UNKNOWN' | 'INTERNAL_ERROR': Error code that can be returned by a Synthetic test.
      - `message` string: The API test error message.
    - `httpStatusCode` integer: The API test HTTP status code.
    - `requestHeaders` object: Request header object used for the API test.
    - `responseBody` string: Response body returned for the API test.
    - `responseHeaders` object: Response headers returned for the API test.
    - `responseSize` integer: Global size in byte of the API test response.
    - `timings` SyntheticsTiming: Object containing all metrics and their values collected for a Synthetic API test. See the [Synthetic Monitoring Metrics documentation](https://docs.datadoghq.com/synthetics/metrics/).
      - `dns` number, double: The duration in millisecond of the DNS lookup.
      - `download` number, double: The time in millisecond to download the response.
      - `firstByte` number, double: The time in millisecond to first byte.
      - `handshake` number, double: The duration in millisecond of the TLS handshake.
      - `redirect` number, double: The time in millisecond spent during redirections.
      - `ssl` number, double: The duration in millisecond of the TLS handshake.
      - `tcp` number, double: Time in millisecond to establish the TCP connection.
      - `total` number, double: The overall time in millisecond the request took to be processed.
      - `wait` number, double: Time spent in millisecond waiting for a response.
  - `result_id` string: ID of the API test result.
  - `status` 0 | 1 | 2: The status of your Synthetic monitor. * `O` for not triggered * `1` for triggered * `2` for no data

## Other responses

- `403`: Forbidden
- `404`: - Synthetic Monitoring is not activated for the user - Test or result is not owned by the user
- `429`: Too many requests

---

[API](https://skmtc.dev/datadog/apis/api-v1.md) - [All operations](https://skmtc.dev/datadog/apis/api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/datadog/apis/api-v1/revisions/ca5871004d26?raw)
