List observability issues (deprecated)
curl --request GET \
--url https://api.getbluejay.ai/v1/issues \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://api.getbluejay.ai/v1/issues"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://api.getbluejay.ai/v1/issues', 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.getbluejay.ai/v1/issues",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <x-api-key>"
],
]);
$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.getbluejay.ai/v1/issues"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
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.getbluejay.ai/v1/issues")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/issues")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body[
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"title": "<string>",
"description": "<string>",
"status": "<string>",
"error_source": "<string>",
"first_seen_at": "2023-11-07T05:31:56Z",
"last_seen_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"priority": "<string>",
"assignee_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"due_date": "2023-12-25",
"error_code": "<string>",
"error_signature": "<string>",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Issues
List Issues
deprecated
GET
/
v1
/
issues
List observability issues (deprecated)
curl --request GET \
--url https://api.getbluejay.ai/v1/issues \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://api.getbluejay.ai/v1/issues"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://api.getbluejay.ai/v1/issues', 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.getbluejay.ai/v1/issues",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <x-api-key>"
],
]);
$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.getbluejay.ai/v1/issues"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
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.getbluejay.ai/v1/issues")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/issues")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body[
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"title": "<string>",
"description": "<string>",
"status": "<string>",
"error_source": "<string>",
"first_seen_at": "2023-11-07T05:31:56Z",
"last_seen_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"priority": "<string>",
"assignee_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"due_date": "2023-12-25",
"error_code": "<string>",
"error_signature": "<string>",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Integration Prompt for AI Agents
# Bluejay — Testing & Monitoring Platform for Conversational AI Agents
You are a senior backend engineer integrating the Bluejay API. Think step-by-step: first understand the endpoint, then plan the integration, then implement with minimal changes.
## List Issues — GET /v1/issues
> **What this endpoint does:** list the problems Bluejay found on your calls, most recently seen first.
**Endpoint:** GET `https://api.getbluejay.ai/v1/issues`
**Auth:** `X-API-Key` header
### Required Parameters
| Name | Type | Description |
|------|------|-------------|
| X-API-Key | string | API key required to authenticate requests. |
Review the full parameter list at https://docs.getbluejay.ai/api-reference/endpoint/list-issues and include any optional parameters (e.g., `status`, `priority`, `type`, `assignee_id`, `limit`, `offset`) that serve your integration's use case.
### Example
**Simple GET:**
```python
import requests
def list_open_issues(api_key: str) -> dict:
url = "https://api.getbluejay.ai/v1/issues"
headers = {"X-API-Key": api_key}
response = requests.get(url, headers=headers, params={"status": "open"})
response.raise_for_status()
return response.json()
```
### Constraints
- Minimal changes — only add/change files needed for this integration.
- Match existing codebase patterns (naming, file structure, error handling).
- Include error handling for 422: Validation Error.
### Integration Checklist
Before writing code, verify:
1. Which module/service owns this API domain in the codebase?
2. What HTTP client and error-handling patterns does the project use?
3. Are there existing types/interfaces to extend?
Then implement the integration, export it, and confirm it compiles/passes lint.
non_deterministic issue (Pattern in the dashboard) is grouped from similar failures. It appears once the same problem recurs across calls. A deterministic issue (Error in the dashboard) comes from an error the platform recognizes outright, such as a tool call returning a 500, and appears as soon as that error is found.
Filter by status, priority, type or assignee_id. Results are ordered by when the issue was last seen, newest first. Pass limit (1 to 200, default 50) and offset to walk the list. The dashboard Issues page is not paginated. This list is.Query Parameters
open, in_progress, resolved or ignored
low, medium, high or urgent
non_deterministic or deterministic
Required range:
1 <= x <= 200Required range:
x >= 0Response
Successful Response
non_deterministic if clustered from similar failures, deterministic if recognised from a known error
open, in_progress, resolved or ignored
where the failure was recorded, e.g. tool_call
low, medium, high or urgent. Null until someone sets it.
null when nobody has set one
deterministic error code when known
hash or text that identifies this failure
cluster this issue was minted from