API Reference

All Endpoints

Complete reference of all Technical Debt Radar API endpoints grouped by module.

All API Endpoints

Base URL: https://api.radar.dev/v1

All authenticated endpoints require a Bearer token in the Authorization header:

Authorization: Bearer <access_token>

Rate limits vary by endpoint and are noted in the individual endpoint docs. Default rate limit is 100 requests per minute per API key.


Authentication (11 endpoints)

MethodPathDescriptionAuthRate Limit
POST/auth/signupRegister a new accountNo3/min
POST/auth/loginSign in with email and passwordNo5/min
POST/auth/refreshRefresh an expired access tokenNo10/min
POST/auth/logoutInvalidate current access tokenYes20/min
POST/auth/forgot-passwordRequest a password reset emailNo3/min
POST/auth/reset-passwordSet a new password using reset tokenNo5/min
GET/auth/githubRedirect to GitHub OAuth flowNo--
GET/auth/github/callbackGitHub OAuth callback handlerNo--
GET/auth/googleRedirect to Google OAuth flowNo--
GET/auth/google/callbackGoogle OAuth callback handlerNo--
GET/auth/meGet current authenticated user profileYes60/min

Organizations & Teams (14 endpoints)

MethodPathDescriptionAuthMin Role
POST/orgsCreate a new organizationYes--
GET/orgsList organizations for current userYesmember
GET/orgs/:idGet organization detailsYesmember
PUT/orgs/:idUpdate organization settingsYesadmin
DELETE/orgs/:idDelete organization permanentlyYesowner
GET/orgs/:id/membersList organization membersYesmember
PUT/orgs/:id/members/:userIdUpdate a member's roleYesadmin
DELETE/orgs/:id/members/:userIdRemove a memberYesadmin
POST/orgs/:id/invitationsInvite a new member by emailYesadmin
GET/orgs/:id/invitationsList pending invitationsYesadmin
DELETE/orgs/:id/invitations/:invitationIdCancel a pending invitationYesadmin
POST/orgs/invitations/:token/acceptAccept an invitationYes--
POST/orgs/:id/transfer-ownershipTransfer org ownershipYesowner
POST/orgs/:id/leaveLeave an organizationYesmember

Billing & Subscriptions (12 endpoints)

MethodPathDescriptionAuthPlan
POST/billing/checkoutCreate a Stripe checkout sessionYesAny
POST/billing/paypal/checkoutCreate a PayPal checkout sessionYesAny
POST/billing/portalOpen Stripe customer portalYesPaid
GET/billing/subscription/:orgIdGet current subscription detailsYesAny
POST/billing/cancelCancel subscription at period endYesPaid
POST/billing/reactivateReactivate a cancelled subscriptionYesPaid
POST/billing/change-planChange to a different planYesPaid
POST/billing/preview-changePreview proration for plan changeYesPaid
GET/billing/invoices/:orgIdList invoices for organizationYesPaid
POST/billing/webhook/stripeStripe webhook receiverNo--
POST/billing/webhook/paypalPayPal webhook receiverNo--

Plans (4 endpoints)

MethodPathDescriptionAuthPlan
GET/plansList all available plansNo--
GET/plans/:planIdGet plan detailsNo--
GET/plans/org/:orgId/usageGet org plan usage statsYesAny
GET/plans/org/:orgId/can-use/:featureCheck if org can use a featureYesAny
GET/plans/org/:orgId/enforcementGet enforcement summaryYesAny

Credits (3 endpoints)

MethodPathDescriptionAuthPlan
GET/credits/org/:orgIdGet current credit balanceYesAny
GET/credits/org/:orgId/transactionsList credit transactionsYesAny
GET/credits/org/:orgId/usage-by-operationGet usage breakdown by AI operationYesAny

Dashboard & Repositories (16 endpoints)

MethodPathDescriptionAuthPlan
GET/api/reposList repositories for current userYesAny
GET/api/repos/:id/overviewGet repository health overviewYesAny
GET/api/repos/:id/violationsList violations (filterable, paginated)YesAny
GET/api/repos/:id/trendsGet violation/debt trends over timeYesAny
GET/api/repos/:id/hotspotsGet complexity hotspot filesYesAny
GET/api/repos/:id/prsList PR analysis historyYesAny
GET/api/repos/:id/runtime-risksGet runtime risk detailsYesAny
GET/api/repos/:id/policyGet current radar.yml policyYesAny
PUT/api/repos/:id/policyUpdate policy via visual editorYesPro+
POST/api/repos/:id/policy/previewPreview policy changesYesAny
GET/api/repos/:id/architecture-graphGet D3 architecture graph dataYesPro+
GET/api/repos/:id/first-scanGet first-scan baseline resultsYesAny
POST/api/repos/:id/analyzeTrigger manual analysisYesAny
GET/api/packsList rule packs (searchable)YesAny
GET/api/packs/:nameGet rule pack detailsYesAny
POST/api/repos/:id/apply-packApply a rule pack to repositoryYesPro+

Webhooks (2 endpoints)

MethodPathDescriptionAuthPlan
POST/webhooks/githubGitHub App webhook receiverNo--
POST/webhooks/gitlabGitLab webhook receiverNo--

Badges (1 endpoint)

MethodPathDescriptionAuthPlan
GET/badge/:owner/:repoSVG badge for repo healthNoSolo+

Response Format

All endpoints return JSON. Successful responses use HTTP 200 (or 201 for creation, 204 for deletion). Error responses follow a consistent structure:

{
  "statusCode": 401,
  "message": "Unauthorized",
  "error": "Unauthorized"
}

Pagination

Endpoints that return lists accept page and perPage query parameters:

GET /api/repos/:id/violations?page=2&perPage=50

Paginated responses include metadata:

{
  "data": [...],
  "total": 247,
  "page": 2,
  "perPage": 50,
  "totalPages": 5
}
Technical Debt Radar Documentation