GET /analytics/metrics

Return PR and review analytics metrics.

The same data as the analytics dashboard. Windowing: pass explicit start/end, or days (default: the last 30 days). account_type in all|user|bot scopes the authors (bot = the apps/agents). Available to all credential types: the responses expose the organization's own GitHub PR/review activity, no secrets.

curl "https://api.ellipsis.dev/v1/analytics/metrics" \
  -H "Authorization: Bearer $ELLIPSIS_API_KEY"
{
  "available_authors": [
    {
      "login": "string",
      "prs": 0
    }
  ],
  "available_repos": [
    {
      "prs": 0,
      "repo_full_name": "string"
    }
  ],
  "contributors": [
    {
      "additions": 0,
      "ai_attributed_prs": 0,
      "avatar_url": "string",
      "deletions": 0,
      "login": "string",
      "prs_merged": 0,
      "reviews": 0
    }
  ],
  "repositories": [
    {
      "active_contributors": 0,
      "additions": 0,
      "ai_attributed_prs": 0,
      "deletions": 0,
      "prs_merged": 0,
      "repo_full_name": "string",
      "reviews": 0
    }
  ],
  "reviewers": [
    {
      "approved": 0,
      "avatar_url": "string",
      "changes_requested": 0,
      "comments": 0,
      "lines_reviewed": 0,
      "login": "string",
      "reviews": 0
    }
  ],
  "series": [
    {
      "active_contributors": 0,
      "additions": 0,
      "approved": 0,
      "changes_requested": 0,
      "commented": 0,
      "commits": 0,
      "date": "string",
      "deletions": 0,
      "prs_closed": 0,
      "prs_merged": 0,
      "prs_opened": 0,
      "review_comments": 0,
      "reviews": 0,
      "time_to_merge_hours": {
        "p0": 0,
        "p100": 0,
        "p25": 0,
        "p50": 0,
        "p75": 0
      }
    }
  ],
  "totals": {
    "active_contributors": 0,
    "additions": 0,
    "approved": 0,
    "changes_requested": 0,
    "commented": 0,
    "commits": 0,
    "deletions": 0,
    "median_time_to_first_review_hours": 0,
    "median_time_to_merge_hours": 0,
    "open_prs": 0,
    "prs_closed": 0,
    "prs_merged": 0,
    "prs_opened": 0,
    "prs_reviewed": 0,
    "review_comments": 0,
    "reviews": 0
  }
}
No request body.
{
  "properties": {
    "available_authors": {
      "items": {
        "properties": {
          "login": {
            "type": "string"
          },
          "prs": {
            "type": "integer"
          }
        },
        "required": [
          "login",
          "prs"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "available_repos": {
      "items": {
        "properties": {
          "prs": {
            "type": "integer"
          },
          "repo_full_name": {
            "type": "string"
          }
        },
        "required": [
          "repo_full_name",
          "prs"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "contributors": {
      "items": {
        "properties": {
          "additions": {
            "type": "integer"
          },
          "ai_attributed_prs": {
            "type": "integer"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "deletions": {
            "type": "integer"
          },
          "login": {
            "type": "string"
          },
          "prs_merged": {
            "type": "integer"
          },
          "reviews": {
            "type": "integer"
          }
        },
        "required": [
          "login",
          "avatar_url",
          "prs_merged",
          "reviews",
          "additions",
          "deletions",
          "ai_attributed_prs"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "repositories": {
      "items": {
        "properties": {
          "active_contributors": {
            "type": "integer"
          },
          "additions": {
            "type": "integer"
          },
          "ai_attributed_prs": {
            "type": "integer"
          },
          "deletions": {
            "type": "integer"
          },
          "prs_merged": {
            "type": "integer"
          },
          "repo_full_name": {
            "type": "string"
          },
          "reviews": {
            "type": "integer"
          }
        },
        "required": [
          "repo_full_name",
          "prs_merged",
          "reviews",
          "active_contributors",
          "ai_attributed_prs",
          "additions",
          "deletions"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "reviewers": {
      "items": {
        "properties": {
          "approved": {
            "type": "integer"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "changes_requested": {
            "type": "integer"
          },
          "comments": {
            "type": "integer"
          },
          "lines_reviewed": {
            "type": "integer"
          },
          "login": {
            "type": "string"
          },
          "reviews": {
            "type": "integer"
          }
        },
        "required": [
          "login",
          "avatar_url",
          "reviews",
          "approved",
          "changes_requested",
          "comments",
          "lines_reviewed"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "series": {
      "items": {
        "properties": {
          "active_contributors": {
            "type": "integer"
          },
          "additions": {
            "type": "integer"
          },
          "approved": {
            "type": "integer"
          },
          "changes_requested": {
            "type": "integer"
          },
          "commented": {
            "type": "integer"
          },
          "commits": {
            "type": "integer"
          },
          "date": {
            "type": "string"
          },
          "deletions": {
            "type": "integer"
          },
          "prs_closed": {
            "type": "integer"
          },
          "prs_merged": {
            "type": "integer"
          },
          "prs_opened": {
            "type": "integer"
          },
          "review_comments": {
            "type": "integer"
          },
          "reviews": {
            "type": "integer"
          },
          "time_to_merge_hours": {
            "properties": {
              "p0": {
                "type": "number"
              },
              "p100": {
                "type": "number"
              },
              "p25": {
                "type": "number"
              },
              "p50": {
                "type": "number"
              },
              "p75": {
                "type": "number"
              }
            },
            "required": [
              "p0",
              "p25",
              "p50",
              "p75",
              "p100"
            ],
            "type": "object"
          }
        },
        "required": [
          "date",
          "prs_opened",
          "prs_merged",
          "prs_closed",
          "reviews",
          "approved",
          "changes_requested",
          "commented",
          "review_comments",
          "additions",
          "deletions",
          "commits",
          "active_contributors",
          "time_to_merge_hours"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "totals": {
      "properties": {
        "active_contributors": {
          "type": "integer"
        },
        "additions": {
          "type": "integer"
        },
        "approved": {
          "type": "integer"
        },
        "changes_requested": {
          "type": "integer"
        },
        "commented": {
          "type": "integer"
        },
        "commits": {
          "type": "integer"
        },
        "deletions": {
          "type": "integer"
        },
        "median_time_to_first_review_hours": {
          "type": "number"
        },
        "median_time_to_merge_hours": {
          "type": "number"
        },
        "open_prs": {
          "type": "integer"
        },
        "prs_closed": {
          "type": "integer"
        },
        "prs_merged": {
          "type": "integer"
        },
        "prs_opened": {
          "type": "integer"
        },
        "prs_reviewed": {
          "type": "integer"
        },
        "review_comments": {
          "type": "integer"
        },
        "reviews": {
          "type": "integer"
        }
      },
      "required": [
        "prs_opened",
        "prs_merged",
        "prs_closed",
        "reviews",
        "prs_reviewed",
        "approved",
        "changes_requested",
        "commented",
        "review_comments",
        "additions",
        "deletions",
        "commits",
        "active_contributors",
        "open_prs",
        "median_time_to_merge_hours",
        "median_time_to_first_review_hours"
      ],
      "type": "object"
    }
  },
  "required": [
    "series",
    "totals",
    "repositories",
    "contributors",
    "reviewers",
    "available_repos",
    "available_authors"
  ],
  "type": "object"
}

Request

Responses

On this page

No Headings
Schedule a demo