---
title: "GET /v1/orgs/{orgId}/integrations/{integrationId}/scans"
method: GET
path: "/v1/orgs/{orgId}/integrations/{integrationId}/scans"
tags: ["Orgs", "Integrations"]
---

# GET /v1/orgs/{orgId}/integrations/{integrationId}/scans

`GET /v1/orgs/{orgId}/integrations/{integrationId}/scans`

## Request

- Base URL: `https://api.tessl.io`
- URL: `https://api.tessl.io/v1/orgs/{orgId}/integrations/{integrationId}/scans`
- Auth: none declared

Lists the scan history for the SCM account an integration connects to, newest first. History is keyed by account, not by connection: two connections to the same account share one history, and a scan run through a since-removed connection still appears. Each scan reports a derived `status` (`running` / `failed` / `ok`), repo progress, and finding counts; a failed scan carries a mapped `failure` (which stage, and a closed-set reason — never the internal error text). Results are cursor-paginated in newest-first pages of 10 scans. Returns 422 (not_scannable_integration) for non-scannable integration types, and for a Tessl App (`github-app-agent`) connection that does not serve its account's scans.

## Path parameters

- `orgId` string, uuid, required
- `integrationId` string, uuid, required

## Query parameters

- `page[after]` string

## Headers

- `Authorization` string

## Response `200`

Default Response

- object
  - `links` object, required
    - `self` string, uri, required
    - `next` string, uri, nullable, required
    - `prev` string, uri, nullable, required
  - `meta` object, required
    - `count` number, required
    - `hasMore` boolean, required
  - `data` object[], required
    - `id` string, uuid, required
    - `type` 'scan', required
    - `attributes` object, required
      - `scannedAt` string, date-time, required
      - `origin` string, nullable, required
      - `status` union, required
        - 'running'
        - 'failed'
        - 'ok'
      - `reposScanned` number, required
      - `reposTotal` number, required
      - `countsNew` number, required
      - `countsSeen` number, required
      - `countsDeparted` number, required
      - `scannedThroughIntegrationId` string, uuid, nullable, required
      - `failure` object, nullable, required
        - `stage` union, required
          - 'scan'
          - 'analysis'
        - `reason` union, required
          - 'scan-failed'
          - 'context-read-failed'
          - 'analysis-failed'

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `500`: Internal Server Error

## Changes

- **2026-10-29** `06d2142ed144`: 1 info
  - api operation id `listOrgIntegrationScans` was added
- **2026-09-19** `f5615e00a389`: 1 warning, 1 info
  - deleted the `query` request parameter `limit`
  - added the new optional `query` request parameter `page[after]`
- **2026-09-15** `d50a02b79ad3`: 2 info
  - added the optional property `error/code` to the response with the `403` status
  - added the optional property `error/url` to the response with the `403` status
- **2026-08-28** `d1ef4ac0815d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/tessl/apis/tessl-api/changes/v1/orgs/:orgId/integrations/:integrationId/scans/get.md)

---

[API](https://skmtc.dev/tessl/apis/tessl-api.md) - [All operations](https://skmtc.dev/tessl/apis/tessl-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tessl/apis/tessl-api/revisions/0d008f56f0c1?raw)
