GET /analytics/reviews
Return code-review analytics.
account_type scopes reviewers (bot|user|all) — e.g. "what apps review the most PRs?" is the reviewer facets here with account_type=bot. Windowing: pass explicit start/end, or days (default: the last 30 days).
curl "https://api.ellipsis.dev/v1/analytics/reviews" \
-H "Authorization: Bearer $ELLIPSIS_API_KEY"{
"facets": {
"authors": [
{
"account_type": "string",
"avatar_url": "string",
"login": "string",
"reviews": 0
}
],
"repos": [
{
"repository_name": "string",
"reviews": 0
}
]
},
"review_comments": [
{
"author": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"base_ref": "string",
"body_preview": "string",
"created_at": "2026-01-01T00:00:00Z",
"html_url": "string",
"id": 0,
"path": "string",
"pr_html_url": "string",
"pr_number": 0,
"pr_status": "string",
"pr_title": "string",
"repo_name": "string",
"thumbs_down": 0,
"thumbs_up": 0
}
],
"reviews": [
{
"base_ref": "string",
"comment_count": 0,
"has_body": false,
"html_url": "string",
"id": 0,
"pr_author": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"pr_html_url": "string",
"pr_number": 0,
"pr_status": "string",
"pr_title": "string",
"repo_name": "string",
"reviewer": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"state": "string",
"submitted_at": "2026-01-01T00:00:00Z"
}
],
"series": [
{
"approved": 0,
"changes_requested": 0,
"commented": 0,
"comments": 0,
"comments_bot": 0,
"comments_human": 0,
"date": "string",
"reviewers_bot": 0,
"reviewers_human": 0,
"reviewers_total": 0,
"reviews": 0
}
],
"totals": {
"comments": 0,
"comments_bot": 0,
"comments_human": 0,
"prs": 0,
"reviewers": 0,
"reviews": 0,
"thumbs_down": 0,
"thumbs_up": 0
}
}import os
from ellipsis import Ellipsis
client = Ellipsis(api_key=os.environ["ELLIPSIS_API_TOKEN"])
result = client.analytics.reviews()
print(result){
"facets": {
"authors": [
{
"account_type": "string",
"avatar_url": "string",
"login": "string",
"reviews": 0
}
],
"repos": [
{
"repository_name": "string",
"reviews": 0
}
]
},
"review_comments": [
{
"author": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"base_ref": "string",
"body_preview": "string",
"created_at": "2026-01-01T00:00:00Z",
"html_url": "string",
"id": 0,
"path": "string",
"pr_html_url": "string",
"pr_number": 0,
"pr_status": "string",
"pr_title": "string",
"repo_name": "string",
"thumbs_down": 0,
"thumbs_up": 0
}
],
"reviews": [
{
"base_ref": "string",
"comment_count": 0,
"has_body": false,
"html_url": "string",
"id": 0,
"pr_author": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"pr_html_url": "string",
"pr_number": 0,
"pr_status": "string",
"pr_title": "string",
"repo_name": "string",
"reviewer": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"state": "string",
"submitted_at": "2026-01-01T00:00:00Z"
}
],
"series": [
{
"approved": 0,
"changes_requested": 0,
"commented": 0,
"comments": 0,
"comments_bot": 0,
"comments_human": 0,
"date": "string",
"reviewers_bot": 0,
"reviewers_human": 0,
"reviewers_total": 0,
"reviews": 0
}
],
"totals": {
"comments": 0,
"comments_bot": 0,
"comments_human": 0,
"prs": 0,
"reviewers": 0,
"reviews": 0,
"thumbs_down": 0,
"thumbs_up": 0
}
}import { Ellipsis } from '@ellipsis-dev/sdk';
const client = new Ellipsis({
apiKey: process.env.ELLIPSIS_API_TOKEN!,
});
const result = await client.analytics.reviews();
console.log(result);{
"facets": {
"authors": [
{
"account_type": "string",
"avatar_url": "string",
"login": "string",
"reviews": 0
}
],
"repos": [
{
"repository_name": "string",
"reviews": 0
}
]
},
"review_comments": [
{
"author": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"base_ref": "string",
"body_preview": "string",
"created_at": "2026-01-01T00:00:00Z",
"html_url": "string",
"id": 0,
"path": "string",
"pr_html_url": "string",
"pr_number": 0,
"pr_status": "string",
"pr_title": "string",
"repo_name": "string",
"thumbs_down": 0,
"thumbs_up": 0
}
],
"reviews": [
{
"base_ref": "string",
"comment_count": 0,
"has_body": false,
"html_url": "string",
"id": 0,
"pr_author": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"pr_html_url": "string",
"pr_number": 0,
"pr_status": "string",
"pr_title": "string",
"repo_name": "string",
"reviewer": {
"avatar_url": "string",
"id": 0,
"login": "string",
"type": "string"
},
"state": "string",
"submitted_at": "2026-01-01T00:00:00Z"
}
],
"series": [
{
"approved": 0,
"changes_requested": 0,
"commented": 0,
"comments": 0,
"comments_bot": 0,
"comments_human": 0,
"date": "string",
"reviewers_bot": 0,
"reviewers_human": 0,
"reviewers_total": 0,
"reviews": 0
}
],
"totals": {
"comments": 0,
"comments_bot": 0,
"comments_human": 0,
"prs": 0,
"reviewers": 0,
"reviews": 0,
"thumbs_down": 0,
"thumbs_up": 0
}
}No request body.
{
"properties": {
"facets": {
"properties": {
"authors": {
"items": {
"properties": {
"account_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"avatar_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"login": {
"type": "string"
},
"reviews": {
"type": "integer"
}
},
"required": [
"login",
"avatar_url",
"account_type",
"reviews"
],
"type": "object"
},
"type": "array"
},
"repos": {
"items": {
"properties": {
"repository_name": {
"type": "string"
},
"reviews": {
"type": "integer"
}
},
"required": [
"repository_name",
"reviews"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"repos",
"authors"
],
"type": "object"
},
"review_comments": {
"items": {
"properties": {
"author": {
"properties": {
"avatar_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"login": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"login",
"type",
"avatar_url"
],
"type": "object"
},
"base_ref": {
"type": "string"
},
"body_preview": {
"type": "string"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"html_url": {
"type": "string"
},
"id": {
"type": "integer"
},
"path": {
"type": "string"
},
"pr_html_url": {
"type": "string"
},
"pr_number": {
"type": "integer"
},
"pr_status": {
"type": "string"
},
"pr_title": {
"type": "string"
},
"repo_name": {
"type": "string"
},
"thumbs_down": {
"type": "integer"
},
"thumbs_up": {
"type": "integer"
}
},
"required": [
"id",
"created_at",
"html_url",
"path",
"body_preview",
"author",
"thumbs_up",
"thumbs_down",
"pr_number",
"pr_title",
"pr_html_url",
"pr_status",
"repo_name",
"base_ref"
],
"type": "object"
},
"type": "array"
},
"reviews": {
"items": {
"properties": {
"base_ref": {
"type": "string"
},
"comment_count": {
"type": "integer"
},
"has_body": {
"type": "boolean"
},
"html_url": {
"type": "string"
},
"id": {
"type": "integer"
},
"pr_author": {
"properties": {
"avatar_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"login": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"login",
"type",
"avatar_url"
],
"type": "object"
},
"pr_html_url": {
"type": "string"
},
"pr_number": {
"type": "integer"
},
"pr_status": {
"type": "string"
},
"pr_title": {
"type": "string"
},
"repo_name": {
"type": "string"
},
"reviewer": {
"properties": {
"avatar_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"login": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"login",
"type",
"avatar_url"
],
"type": "object"
},
"state": {
"type": "string"
},
"submitted_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"state",
"submitted_at",
"html_url",
"has_body",
"comment_count",
"reviewer",
"pr_number",
"pr_title",
"pr_html_url",
"pr_status",
"pr_author",
"repo_name",
"base_ref"
],
"type": "object"
},
"type": "array"
},
"series": {
"items": {
"properties": {
"approved": {
"type": "integer"
},
"changes_requested": {
"type": "integer"
},
"commented": {
"type": "integer"
},
"comments": {
"type": "integer"
},
"comments_bot": {
"type": "integer"
},
"comments_human": {
"type": "integer"
},
"date": {
"type": "string"
},
"reviewers_bot": {
"type": "integer"
},
"reviewers_human": {
"type": "integer"
},
"reviewers_total": {
"type": "integer"
},
"reviews": {
"type": "integer"
}
},
"required": [
"date",
"reviews",
"approved",
"commented",
"changes_requested",
"reviewers_human",
"reviewers_bot",
"reviewers_total",
"comments",
"comments_human",
"comments_bot"
],
"type": "object"
},
"type": "array"
},
"totals": {
"properties": {
"comments": {
"type": "integer"
},
"comments_bot": {
"type": "integer"
},
"comments_human": {
"type": "integer"
},
"prs": {
"type": "integer"
},
"reviewers": {
"type": "integer"
},
"reviews": {
"type": "integer"
},
"thumbs_down": {
"type": "integer"
},
"thumbs_up": {
"type": "integer"
}
},
"required": [
"reviews",
"reviewers",
"prs",
"comments",
"comments_human",
"comments_bot",
"thumbs_up",
"thumbs_down"
],
"type": "object"
}
},
"required": [
"reviews",
"review_comments",
"series",
"totals",
"facets"
],
"type": "object"
}Request
daysinteger
startstring · date-time
endstring · date-time
repoarray<string>
authorarray<string>
Filter by reviewer login(s).
account_typedefault
"all"stringreview_statearray<string>