Skip to main content
GET
/
organizations
/
{organization}
/
databases
/
{database}
/
branches
/
{branch}
/
insights
/
anomalies
List branch anomalies
curl --request GET \
  --url https://api.planetscale.com/v1/organizations/{organization}/databases/{database}/branches/{branch}/insights/anomalies \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.planetscale.com/v1/organizations/{organization}/databases/{database}/branches/{branch}/insights/anomalies"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.planetscale.com/v1/organizations/{organization}/databases/{database}/branches/{branch}/insights/anomalies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.planetscale.com/v1/organizations/{organization}/databases/{database}/branches/{branch}/insights/anomalies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.planetscale.com/v1/organizations/{organization}/databases/{database}/branches/{branch}/insights/anomalies"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.planetscale.com/v1/organizations/{organization}/databases/{database}/branches/{branch}/insights/anomalies")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.planetscale.com/v1/organizations/{organization}/databases/{database}/branches/{branch}/insights/anomalies")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "type": "<string>",
  "current_page": 123,
  "next_page": 123,
  "next_page_url": "<string>",
  "prev_page": 123,
  "prev_page_url": "<string>",
  "data": [
    {
      "id": "<string>",
      "period_start": "<string>",
      "period_end": "<string>",
      "minutes_in_violation": 123,
      "active": true,
      "duration": 123,
      "metrics_start": "<string>",
      "metrics_end": "<string>",
      "correlations": [
        {
          "id": "<string>",
          "r": 123,
          "keyspace": "<string>",
          "fingerprint": "<string>",
          "normalized_sql": "<string>",
          "syntax_highlighted_sql": "<string>"
        }
      ]
    }
  ]
}

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

organization
string
required

Organization name slug from list_organizations. Example: acme.

database
string
required

Database name slug from list_databases. Example: app-db.

branch
string
required

Branch name from list_branches. Example: main.

Query Parameters

from
string

Start time for filtering anomalies (ISO 8601 timestamp)

to
string

End time for filtering anomalies (ISO 8601 timestamp)

period
string

Time period for filtering anomalies (e.g., '1h', '24h')

page
integer
default:1

If provided, specifies the page offset of returned results

per_page
integer
default:25

If provided, specifies the number of returned results

Response

Returns anomalies detected on the branch

type
string
required

The response type. Always "list" for paginated responses.

current_page
integer
required

The current page number

next_page
integer | null
required

The next page number, or null when this is the last page

next_page_url
string | null
required

The next page of results, or null when this is the last page

prev_page
integer | null
required

The previous page number, or null when this is the first page

prev_page_url
string | null
required

The previous page of results, or null when this is the first page

data
object[]
required