For AI agents: the complete documentation index is at https://docs.routebase.dev/llms.txt. Every page is also available as Markdown by appending index.md to its URL or by sending Accept: text/markdown.
API Reference

4 endpoints

Start an OWASP scan, poll it to completion, and read the findings. The SARIF export feeds GitHub code scanning and comparable tools.

Start a security scan

POST /api/projects/{projectId}/security/scan-profiles/{profileId}/run

Queues a scan for the given profile and returns immediately with the tracking id, because a scan runs in the background. Poll the scan run endpoint until its status leaves queued and running.

Parameters

Name In Type Required Description
Idempotency-Key header string no Makes a retry of this write safe. Send a new value of 1 to 255 characters for each logical request and the same value on every retry. A successful result is kept for 24 hours, and a retry within that time returns it with the Idempotency-Replayed header instead of running the request again.
profileId path string (uuid) yes Public id of the scan profile.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

202 — The scan was queued.

Property Type Required Description
id string (uuid) yes Public id of the scan run.
scanProfilePublicId string (uuid) yes Profile the run was started from.
status ScanStatus yes Where the run stands. Poll until it leaves queued and running.
trigger ScanTrigger yes What started the run.
startedAt string (date-time) yes When the run was queued, in UTC.
completedAt string (date-time) null no
totalChecks integer (int32) yes How many individual checks the enabled scanners performed.
checksPassed integer (int32) yes Checks that found nothing.
checksFailed integer (int32) yes Checks that produced a finding.
checksSkipped integer (int32) yes Checks that could not run, for example because an endpoint needs authentication the profile does not carry.
securityScore integer (int32) yes Score between 0 and 100, final once the status is completed.
errorMessage string null no
openFindingsCount integer (int32) yes Findings still open after this run.
enabledScannerCount integer (int32) no Scanners the profile enables.
scannersCompleted integer (int32) no Scanners finished so far.
currentScannerId string null no
cancelRequestedAt string (date-time) null no

400 — The request was malformed or failed validation.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

409 — A request with this Idempotency-Key is still running, or its response was too large to keep. The code is IDEMPOTENCY_KEY_IN_PROGRESS or IDEMPOTENCY_RESPONSE_NOT_STORED, and in the second case the request is not run again.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

422 — This Idempotency-Key was already used with a different request body, so use a new key. The code is IDEMPOTENCY_KEY_REUSED.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

Get a scan run

GET /api/projects/{projectId}/security/scan-runs/{runId}

Returns the state of a scan, including how many scanners have finished and which one is running. Once status is completed, securityScore and openFindingsCount are final and a pipeline can gate on them.

Parameters

Name In Type Required Description
runId path string (uuid) yes Public id of the scan run.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — The scan run.

Property Type Required Description
id string (uuid) yes Public id of the scan run.
scanProfilePublicId string (uuid) yes Profile the run was started from.
status ScanStatus yes Where the run stands. Poll until it leaves queued and running.
trigger ScanTrigger yes What started the run.
startedAt string (date-time) yes When the run was queued, in UTC.
completedAt string (date-time) null no
totalChecks integer (int32) yes How many individual checks the enabled scanners performed.
checksPassed integer (int32) yes Checks that found nothing.
checksFailed integer (int32) yes Checks that produced a finding.
checksSkipped integer (int32) yes Checks that could not run, for example because an endpoint needs authentication the profile does not carry.
securityScore integer (int32) yes Score between 0 and 100, final once the status is completed.
errorMessage string null no
openFindingsCount integer (int32) yes Findings still open after this run.
enabledScannerCount integer (int32) no Scanners the profile enables.
scannersCompleted integer (int32) no Scanners finished so far.
currentScannerId string null no
cancelRequestedAt string (date-time) null no

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

List security findings

GET /api/projects/{projectId}/security/findings

Returns the findings of a project across all scans, filtered as you need them. A pipeline that only wants to know whether anything new broke should filter on status=open and on the severities it cares about.

Parameters

Name In Type Required Description
assignedToMe query boolean no Return only findings assigned to the calling user.
scannerId query string no Filter by the scanner that produced the finding.
search query string no Free-text search across title and description.
severity query Severity no Filter by severity.
sortBy query string no Sort order of the result.
status query FindingStatus no Filter by finding status.
take query integer (int32) no Maximum number of items to return. Defaults to 50.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — A page of findings.

Property Type Required Description
items SecurityFinding[] yes The findings on this page.
total integer (int32) yes Total number of matching findings, ignoring paging.
skip integer (int32) yes How many findings were skipped to reach this page.
take integer (int32) yes Page size that was applied.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

Export findings as SARIF

GET /api/projects/{projectId}/security/findings/export/sarif

Returns the findings of a project as a SARIF 2.1.0 document, which GitHub code scanning and comparable tools ingest directly. Upload it from your pipeline and the findings show up next to the code they concern. Without a status filter it returns the open ones, which is what a build gate wants.

Parameters

Name In Type Required Description
status query FindingStatus no Filter by finding status. Defaults to open.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — The SARIF document.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.