Reports
List reports
Returns your reports, newest update first.
To get the next page, send next_cursor as cursor. next_cursor is null on the last page.
To poll for changes, send the newest updated_at that you saw as updated_since. Use the Z form that the API returns. Read every page, then keep the newest updated_at of the first page for the next poll. updated_at changes on each status change, each draft save, and each file upload.
GET
/
api
/
reports
List reports
curl --request GET \
--url https://kalligator.com/api/reports \
--header 'Authorization: Bearer <token>'import requests
url = "https://kalligator.com/api/reports"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://kalligator.com/api/reports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"reports": [
{
"id": "<string>",
"program_id": "<string>",
"program_name": "<string>",
"status": "draft",
"display_status": "<string>",
"title": "<string>",
"revision": 123,
"created_at": "<string>",
"updated_at": "<string>",
"submitted_at": "<string>",
"withdrawn_at": "<string>"
}
],
"next_cursor": "<string>"
}{
"detail": "<string>",
"code": "<string>",
"current": {
"id": "<string>",
"program_id": "<string>",
"program_name": "<string>",
"status": "draft",
"display_status": "<string>",
"title": "<string>",
"revision": 123,
"created_at": "<string>",
"updated_at": "<string>",
"submitted_at": "<string>",
"withdrawn_at": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": "<string>",
"attachments": {},
"submission": {
"submitted_at": "<string>",
"attachments": {},
"content": {
"title": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": ""
},
"program": {
"policy_version": 123,
"name": "<string>",
"scope": "<string>",
"exclusions": "<string>",
"rules": "<string>",
"eligibility": "<string>",
"disclosure": "<string>",
"rewards": {}
},
"stripe": {
"status": "<string>",
"checked_at": "<string>"
}
},
"decision": {
"outcome": "accepted",
"at": "<string>",
"message": "<string>"
},
"payout": {
"status": "approving",
"amount_cents": 123,
"approved_at": "<string>",
"transferred_at": "<string>",
"received_at": "<string>",
"payout_failed_at": "<string>"
}
}
}{
"detail": "<string>",
"code": "<string>",
"current": {
"id": "<string>",
"program_id": "<string>",
"program_name": "<string>",
"status": "draft",
"display_status": "<string>",
"title": "<string>",
"revision": 123,
"created_at": "<string>",
"updated_at": "<string>",
"submitted_at": "<string>",
"withdrawn_at": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": "<string>",
"attachments": {},
"submission": {
"submitted_at": "<string>",
"attachments": {},
"content": {
"title": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": ""
},
"program": {
"policy_version": 123,
"name": "<string>",
"scope": "<string>",
"exclusions": "<string>",
"rules": "<string>",
"eligibility": "<string>",
"disclosure": "<string>",
"rewards": {}
},
"stripe": {
"status": "<string>",
"checked_at": "<string>"
}
},
"decision": {
"outcome": "accepted",
"at": "<string>",
"message": "<string>"
},
"payout": {
"status": "approving",
"amount_cents": 123,
"approved_at": "<string>",
"transferred_at": "<string>",
"received_at": "<string>",
"payout_failed_at": "<string>"
}
}
}Authorizations
A Firebase ID token, or a Kalligator API key (kal_…).
Query Parameters
Reports on each page, from 1 to 100.
Required range:
1 <= x <= 100The next_cursor value from the previous page.
Return only reports changed after this time. Include a time zone, for example 2026-10-01T12:00:00Z.
⌘I
List reports
curl --request GET \
--url https://kalligator.com/api/reports \
--header 'Authorization: Bearer <token>'import requests
url = "https://kalligator.com/api/reports"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://kalligator.com/api/reports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"reports": [
{
"id": "<string>",
"program_id": "<string>",
"program_name": "<string>",
"status": "draft",
"display_status": "<string>",
"title": "<string>",
"revision": 123,
"created_at": "<string>",
"updated_at": "<string>",
"submitted_at": "<string>",
"withdrawn_at": "<string>"
}
],
"next_cursor": "<string>"
}{
"detail": "<string>",
"code": "<string>",
"current": {
"id": "<string>",
"program_id": "<string>",
"program_name": "<string>",
"status": "draft",
"display_status": "<string>",
"title": "<string>",
"revision": 123,
"created_at": "<string>",
"updated_at": "<string>",
"submitted_at": "<string>",
"withdrawn_at": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": "<string>",
"attachments": {},
"submission": {
"submitted_at": "<string>",
"attachments": {},
"content": {
"title": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": ""
},
"program": {
"policy_version": 123,
"name": "<string>",
"scope": "<string>",
"exclusions": "<string>",
"rules": "<string>",
"eligibility": "<string>",
"disclosure": "<string>",
"rewards": {}
},
"stripe": {
"status": "<string>",
"checked_at": "<string>"
}
},
"decision": {
"outcome": "accepted",
"at": "<string>",
"message": "<string>"
},
"payout": {
"status": "approving",
"amount_cents": 123,
"approved_at": "<string>",
"transferred_at": "<string>",
"received_at": "<string>",
"payout_failed_at": "<string>"
}
}
}{
"detail": "<string>",
"code": "<string>",
"current": {
"id": "<string>",
"program_id": "<string>",
"program_name": "<string>",
"status": "draft",
"display_status": "<string>",
"title": "<string>",
"revision": 123,
"created_at": "<string>",
"updated_at": "<string>",
"submitted_at": "<string>",
"withdrawn_at": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": "<string>",
"attachments": {},
"submission": {
"submitted_at": "<string>",
"attachments": {},
"content": {
"title": "<string>",
"asset": "<string>",
"description": "<string>",
"cvss_vector": ""
},
"program": {
"policy_version": 123,
"name": "<string>",
"scope": "<string>",
"exclusions": "<string>",
"rules": "<string>",
"eligibility": "<string>",
"disclosure": "<string>",
"rewards": {}
},
"stripe": {
"status": "<string>",
"checked_at": "<string>"
}
},
"decision": {
"outcome": "accepted",
"at": "<string>",
"message": "<string>"
},
"payout": {
"status": "approving",
"amount_cents": 123,
"approved_at": "<string>",
"transferred_at": "<string>",
"received_at": "<string>",
"payout_failed_at": "<string>"
}
}
}