Performance Results Webhook

You can send an alert for every API call you make, or just those that have failed or generated a warning

If you'd like to use a custom integration, you can use our Performance Webhooks to receive alerts on API call results.

To set it up, you just need to provide us with a URL that is publicly accessible. This could be something as simple as a AWS Lambda or a Google Cloud function.

We use a HTTP POST to send you the following data:

{   call_id: str
    call_url: str
    call_meta:
        name: str
        description: str
        tags: list[str]
        domain: str
    project_meta: 
	  	  name: str
        organization: str
        tags: list[str]
    result_id: str
    result_url: str
    result: str
    result_class: str
    location_id: str
    response_size: int | null
    response_time: int | null
    context: dict[str, Any]
    http_code: int
    http_reason: str
    workflow_id: str | null = null
    workflow_name: str | null = null
    workflow_result_id: str | null = null
    workflow_url: str | null = null
    workflow_result_url: str | null = null
    start_time: str | null = null
    target_data: [NOTE: may be null] 
        ip_addr: str
        cloud: str | null = null
        city: str | null = null
        region: str | null = null
        country: str | null = null
        continent: str | null = null
        latitude: str | null = null
        longitude: str | null = null
        network: str | null = null
        cdn: str | null = null
        asn: str | null = null
    timing_data: [NOTE: may be null] 
        dns: int | null
        connect: int | null
        tls_handshake: int | null
        upload: int | null
        processing: int | null
        download: int | null
        total: int | null
    location_data:  [NOTE: may be null] 
        ip_addr: str
        cloud: str | null = null
        city: str | null = null
        region: str | null = null
        country: str | null = null
        continent: str | null = null
        latitude: str | null = null
        longitude: str | null = null
    dns_records:  [NOTE: may be null] 
        a: list[str] | null
        ns: list[str] | null
        cname: list[str] | null

Note that the result_class will be one of PASS, SLOW, WARNING, or FAIL.
The result is more granular - those can be:

  • For WARNING class: CONNECTION_WARNING, HTTP_REDIRECT_ERROR, HTTP_CLIENT_ERROR, CONTENT_WARNING, SLA_WARNING.
  • For FAIL class: HTTP_SERVER_ERROR, CONNECTION_ERROR, HEADER_ERROR, CONTENT_ERROR, SLA_ERROR.
  • For PASS class: COMPLETE.
  • For SLOW class: SLOW_COMPLETE.

Here are the definitions for each field in the webhook:

  • call_id: The APIContext identifier for the Call ID - this is a static ID that will be the same every time the call is made. Used for correlating results with the same call parameters.
  • call_url: URL link to the APIContext API Call configuration/summary page associated with this API Call.
  • call_meta: These fields are set during call configuration.
    • name: The name of the APIContext API call - this is set during call configuration.
    • description: A text description providing more information about a specific API call.
    • tags: A list of tags associated with the APIConext API Call.
    • domain: The domain name of the APIContext API call.
  • project_meta: These fields are set during organization and project configuration.
    • name: The name of the APIContext API call.
    • organization: The APIContext organization name where the project can be found.
    • tags: A list of tags associated with the Project.
  • result_id: A unique identifier assigned to a specific result. This will be unique for every call.
  • result_url: This is the URL link that takes you to the APIContext API Results page for this single request.
  • result: The specific status explaining the reason for result_class in more detail, e.g. ‘Complete’, ‘Skipped’, ‘SLA Warning’, etc.
    • For FAIL class: HTTP_SERVER_ERROR, CONNECTION_ERROR, HEADER_ERROR, CONTENT_ERROR, SLA_ERROR.
    • For PASS class: COMPLETE.
    • For SLOW class: SLOW_COMPLETE
    • For WARNING class: CONNECTION_WARNING, HTTP_REDIRECT_ERROR, HTTP_CLIENT_ERROR, CONTENT_WARNING, SLA_WARNING.
  • result_class: The result of the test.
    • FAIL: Indicates the call has returned a response code with a FAIL condition. Usually, this indicates a 4xx or 5xx response, but can be set during alert configuration.
    • PASS: Indicates the call has returned a response code with a PASS condition. Usually, this indicates a 2xx response, but can be set during alert configuration.
    • SLOW: Indicates the call has returned a response code with a slow response. The expected response time can be set during alert configuration.
    • WARNING: Indicates the call has returned a response code with a WARNING condition, which can be set during alert configuration.
  • location_id: Unique identifier of the APIContext agent location - e.g. apimetrics_azurenorwayeast.
  • response_size: The size of the response data returned from a request, measured in bytes.
  • response_time: The number of milliseconds (ms) the response took to fully download.
  • context: APIContext internal reference fields used for analysis and de-bugging only.
  • http_code: The http response code.
    • 1xx informational response – the request was received, continuing process
    • 2xx successful – the request was successfully received, understood, and accepted
    • 3xx redirection – further action needs to be taken in order to complete the request
    • 4xx client error – the request contains bad syntax or cannot be fulfilled
    • 5xx server error – the server failed to fulfil an apparently valid request
  • http_reason: A brief description or phrase associated with an HTTP status code, explaining the reason for the response (e.g., "OK" for a 200 code).
  • workflow_id: The APIContext workflow ID associated with the request. Please note this will be empty if the request is not part of a workflow.
  • workflow_name: The name of the workflow associated with the request. Please note this will be empty if the request is not part of a workflow.
  • workflow_result_id: A unique identifier for the result of a specific APIContext workflow execution. Please note this will be empty if the request is not part of a workflow.
  • workflow_url: A URL pointing to the workflow configuration/summary page. Please note this will be empty if the request is not part of a workflow.
  • workflow_result_url: A URL linking to the APIContext workflow result page for the workflow associated with the request. Please note this will be empty if the request is not part of a workflow.
  • start_time: The timestamp when the call was instantiated.
  • target_data: [NOTE: may be null]
    • ip_addr: The IP address of the target endpoint.
    • cloud: The cloud service provider where the target endpoint is located.
    • city: The city where the target endpoint is geographically located.
    • region: The geographic region where the target endpoint is located. E.g. ‘Oslo’, ‘Dublin’
    • country: The country where the target endpoint or network is geographically located.
    • continent: The continent where the target endpoint resides.
    • latitude: The geographic latitude of the target endpoint.
    • longitude: The geographic longitude of the target endpoint.
    • network: The network associated with the target endpoint - e.g. CloudFlare, Akamai.
    • cdn: The content delivery network associated with the target endpoint - e.g. CloudFlare, Akamai.
    • asn: The Autonomous System Number (ASN) associated with the target endpoint.
  • timing_data: [NOTE: may be null]
    • dns: The number of milliseconds (ms) it took for the DNS lookup.
    • connect: The number of milliseconds (ms) to complete the network connection.
    • tls_handshake: The number of milliseconds (ms) to complete the network connection.
    • upload: The number of milliseconds (ms) the request took to upload to the endpoint server.
    • processing: The number of milliseconds (ms) the endpoint server took to process the request.
    • download: The number of milliseconds (ms) the response download took to complete.
    • total: The number of milliseconds (ms) from the initial request until the response is fully downloaded.
  • location_data: [NOTE: may be null]
    • ip_addr: The IP address where the API call originated, i.e. the location of the APIContext agent.
    • cloud: Name of the cloud provider from where the call originated, i.e. the location of the APIContext agent.
    • city: City from where the call originated, i.e. the location of the APIContext agent.
    • region: The region where the API call originated, i.e. the location of the APIContext agent. E.g. ‘Oslo’, ‘Dublin’
    • country: Country where the API call originated, i.e. the location of the APIContext agent.
    • continent: Continent where the API call originated, i.e. the location of the APIContext agent.
    • latitude: The geographic latitude where the API call originated, i.e. the location of the APIContext agent.
    • longitude: The geographic longitude where the API call originated, i.e. the location of the APIContext agent.
  • dns_records: [NOTE: may be null]
    • a: The DNS A record record for the target endpoint that maps its domain name to its corresponding IPv4 address.
    • ns: The DNS NS record that specifies the name servers responsible for a particular API Call.
    • cname: The DNS C Name record for the target endpoint that maps its domain name to another domain name, effectively aliasing the domain called to another domain.