Arkose Labs API Status and Health Checks

This page tells you

  • How to check on whether the Arkose Labs APIs are up.
  • How to see regional health checks.

It is applicable to both Arkose Detect and Arkose Protect.

Real Time Arkose Labs API Status

You can view real-time status of the Arkose Labs APIs at: http://status.arkoselabs.com.

This takes you to a dashboard that shows the health of Arkose Labs services.

Arkose Labs Status Endpoint

To access the Arkose Labs status endpoint, use:

GET https://status.arkoselabs.com/api/v2/status.json

The endpoint will return one of the following JSON responses.

All Systems Operational

{
    "page": {
        "id": "ntmkcpjv4jzt",
        "name": "Arkose Labs",
        "url": "https://status.arkoselabs.com",
        "time_zone": "Australia/Brisbane",
        "updated_at": "2019-12-21T12:23:44.180+10:00"
    },
    "status": {
        "indicator": "none",
        "description": "All Systems Operational"
    }
}

Partially Degraded Service

{
    "page": {
        "id": "ntmkcpjv4jzt",
        "name": "Arkose Labs",
        "url": "https://status.arkoselabs.com",
        "time_zone": "Australia/Brisbane",
        "updated_at": "2020-03-06T09:01:34.496+10:00"
    },
    "status": {
        "indicator": "minor",
        "description": "Partially Degraded Service"
    }
}

Major System Outage

{
    "page": {
        "id": "ntmkcpjv4jzt",
        "name": "Arkose Labs",
        "url": "https://status.arkoselabs.com",
        "time_zone": "Australia/Brisbane",
        "updated_at": "2020-03-06T09:07:06.394+10:00"
    },
    "status": {
        "indicator": "critical",
        "description": "Major System Outage"
    }
}

The status:description will contain information regarding outages. If there are no outages it will contain All Systems Operational.

Using the API Status Endpoint With Your Service

We use the term Fail Open to mean that even when failure conditions for the Arkose Platform are present, we want the overall process to proceed. We recommend you integrate and configure Arkose APIs so that they can be bypassed in the rare event of any Arkose API-related service disruption and your process can proceed.

Server-Side

On the server side, Verify API calls ensure that a valid token is present. An unexpectedly long response time or server side HTTP error code could signal an issue with a call. To rule out localized issues, please check Arkose Services' status by calling the Arkose Status API as shown above. You can use the response (Operational, Partially Degraded, or System Outage) to decide on the right fallback flow. If there is an outage or disruption, then your server should bypass any validity checks for the Arkose token and let the user continue the session.

Client-Side

An unexpected failure of the Client API could stop a website from loading or negatively impact the user experience. Use the Arkose Client API's onError() callback to handle errors gracefully.

When the Client API request timeouts, use the Enforcement Object's reset callback to retry the call. If the issue persists, check the service's status by calling the Arkose Status API as shown above. If the response confirms an outage, switch to your system's fallback flow. You should check for other JavaScript or third-party errors before bypassing the Arkose Client API or switching to a fallback option.

Regional Endpoint Health Checks

📘

The values in the table below are subject to change at any time.

Use the following code to access regional health checks and response time information:

// General format:
GET https://status.arkoselabs.com/metrics-display/{component_ID}/{timerange}

// Or for a specific example getting the Singapore response time:
GET https://status.arkoselabs.com/metrics-display/13lww8jwjcfq/day.json

Use the table below to get the correct component_ID and timerange.

Healthcheck

component_id

timerange

North Virginia Healthcheck

x7vj2bf6ckzv

day.json
week.json
month.json

North Virginia Response Time

6wbnmjn5w03x

day.json
week.json
month.json

Oregon Healthcheck

f5txw3k5rpbs

day.json
week.json
month.json

Oregon Response Time

m3pl0rjry4cy

day.json
week.json
month.json

Singapore Healthcheck

p3frx5vqjd5x

day.json
week.json
month.json

Singapore Response Time

13lww8jwjcfq

day.json
week.json
month.json

Ireland Heathcheck

cdplvgx9msf1

day.json
week.json
month.json

Ireland Response Time

8t7xx4yjbswj

day.json
week.json
month.json

Here is a sample of code interrogates the Regional Endpoints for status and metrics.

const axios = require("axios");
const NorthVirginiaHealth = "x7vj2bf6ckzv";
const NorthVirginiaTiming = "6wbnmjn5w03x";

function getOperationalStatus() {
  axios
    .get(`https://status.arkoselabs.com/api/v2/status.json`)
    .then(function(response) {
      console.log(`Arkose Labs Status: ${response.data.status.description}`);
    })
    .catch(function(error) {
      console.log(error);
    });
}

function getCurrentHealthcheck(endpoint, timerange) {
  axios
    .get(
      `https://status.arkoselabs.com/metrics-display/${endpoint}/${timerange}`
    )
    .then(function(response) {
      console.log(`North Virginia health is ${response.data.summary.last}%`);
    })
    .catch(function(error) {
      console.log(error);
    });
}

function getLastResponseTiming(endpoint, timerange) {
  axios
    .get(
      `https://status.arkoselabs.com/metrics-display/${endpoint}/${timerange}`
    )
    .then(function(response) {
      console.log(`North Virginia last response time was: ${response.data.summary.last}ms`);
    })
    .catch(function(error) {
      console.log(error);
    });
}

getOperationalStatus();
getCurrentHealthcheck(NorthVirginiaHealth, "day.json");
getLastResponseTiming(NorthVirginiaTiming, "day.json");