curl --request GET \
--url https://api.cloud.corbado.io/v1/observe/errors \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cloud.corbado.io/v1/observe/errors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cloud.corbado.io/v1/observe/errors', 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.cloud.corbado.io/v1/observe/errors",
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.cloud.corbado.io/v1/observe/errors"
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.cloud.corbado.io/v1/observe/errors")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/errors")
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[
{
"id": "<string>",
"name": "<string>",
"type": "general",
"severity": "error",
"createdMs": 123,
"updatedMs": 123,
"description": "<string>",
"subFlowType": "<string>",
"recommendation": {
"id": "<string>",
"action": "ignore",
"summary": "<string>",
"source": "manual",
"createdMs": 123,
"updatedMs": 123,
"explanation": "<string>",
"reproduction": "<string>",
"fixDetails": "<string>",
"annotationID": "<string>",
"annotation": {
"id": "<string>",
"headline": "<string>",
"dateMs": 123,
"createdMs": 123,
"updatedMs": 123,
"description": "<string>"
},
"assets": [
{
"id": "<string>",
"fileName": "<string>",
"contentType": "<string>",
"sizeBytes": 123,
"status": "pending",
"createdMs": 123
}
]
},
"lastImpact": {
"analyzedAtMs": 123,
"fromDate": "<string>",
"toDate": "<string>",
"baselineMode": "<string>",
"affectedFlowCount": 123,
"baselineFlowCount": 123,
"affectedCompletionRate": 123,
"baselineCompletionRate": 123,
"completionLift": 123,
"affectedCompletedDurationP50Ms": 123,
"baselineCompletedDurationP50Ms": 123,
"perFlowType": [
{
"flowType": "<string>",
"affectedFlowCount": 123,
"attemptCount": 123,
"completionLift": 123
}
],
"subflowCode": "<string>",
"subflowCompletionDefinitional": true,
"affectedSubflowCompletionRate": 123,
"baselineSubflowCompletionRate": 123,
"subflowCompletionLift": 123
}
}
]{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}List errors
Lists the project’s curated errors (the labels flavours are mapped to). Occurrence rollups are computed client-side from the flavour list.
Required API key permission: observe:errors:read.
curl --request GET \
--url https://api.cloud.corbado.io/v1/observe/errors \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cloud.corbado.io/v1/observe/errors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cloud.corbado.io/v1/observe/errors', 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.cloud.corbado.io/v1/observe/errors",
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.cloud.corbado.io/v1/observe/errors"
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.cloud.corbado.io/v1/observe/errors")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/errors")
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[
{
"id": "<string>",
"name": "<string>",
"type": "general",
"severity": "error",
"createdMs": 123,
"updatedMs": 123,
"description": "<string>",
"subFlowType": "<string>",
"recommendation": {
"id": "<string>",
"action": "ignore",
"summary": "<string>",
"source": "manual",
"createdMs": 123,
"updatedMs": 123,
"explanation": "<string>",
"reproduction": "<string>",
"fixDetails": "<string>",
"annotationID": "<string>",
"annotation": {
"id": "<string>",
"headline": "<string>",
"dateMs": 123,
"createdMs": 123,
"updatedMs": 123,
"description": "<string>"
},
"assets": [
{
"id": "<string>",
"fileName": "<string>",
"contentType": "<string>",
"sizeBytes": 123,
"status": "pending",
"createdMs": 123
}
]
},
"lastImpact": {
"analyzedAtMs": 123,
"fromDate": "<string>",
"toDate": "<string>",
"baselineMode": "<string>",
"affectedFlowCount": 123,
"baselineFlowCount": 123,
"affectedCompletionRate": 123,
"baselineCompletionRate": 123,
"completionLift": 123,
"affectedCompletedDurationP50Ms": 123,
"baselineCompletedDurationP50Ms": 123,
"perFlowType": [
{
"flowType": "<string>",
"affectedFlowCount": 123,
"attemptCount": 123,
"completionLift": 123
}
],
"subflowCode": "<string>",
"subflowCompletionDefinitional": true,
"affectedSubflowCompletionRate": 123,
"baselineSubflowCompletionRate": 123,
"subflowCompletionLift": 123
}
}
]{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Authorizations
Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.
Response
All errors of the project, sorted by creation time (descending).
10000Error ID (format err-<number>).
Human-readable error name.
Whether the error is a general (cross-deployment) or project-specific one.
general, project-specific User-declared triage severity of an occurrence of this error.
error, warn, info Creation time in milliseconds since epoch.
Last update time in milliseconds since epoch.
Optional longer description of the error.
Auto-managed subflow scope — stamped from the first assigned flavours, enforced on every later assignment (an error never mixes subflow types), cleared when the last member is unassigned. Never user input. Absent while the error has no members.
Curated guidance attached to an error (at most one per error): what the error is and how to reproduce it, the recommended handling (ignore / observe / fix), and — for fix — the fix in detail. Human-created like the error itself; classification never writes it. Free-text fields are markdown.
Show child attributes
Show child attributes
Result of the most recent impact analysis run for this error: the completion-rate and completed-duration comparison against the baseline, plus when it ran and over which range. Stored when the impact endpoint is called with the error's ID; absent while no analysis ran (or the error lost its last member flavour since). Numbers describe the member set at analysis time — analyzedAtMs says how current they are.
Show child attributes
Show child attributes
Was this page helpful?