---
title: "One agent-readiness scan in full: summary plus every check with evidence"
method: GET
path: "/readiness/{scanId}"
tags: ["readiness"]
---

# One agent-readiness scan in full: summary plus every check with evidence

`GET /readiness/{scanId}`

## Request

- Base URL: `https://portal.fractionalteams.com/api/v1`
- URL: `https://portal.fractionalteams.com/api/v1/readiness/{scanId}`
- Auth: HTTP bearer

## Path parameters

- `scanId` integer, required

## Response `200`

The scan

- ReadinessScan
  - `scan_id` integer, required
  - `engine` 'portal' | 'ora', required: portal = the Fractional Teams scan; ora = an ora.ai read stored for calibration
  - `engine_version` string, nullable
  - `standard_version` string, nullable: e.g. "AgentReady 1.0"
  - `status` 'running' | 'complete' | 'partial' | 'failed' | 'blocked', required
  - `triggered_by` string: timer, cli, or admin:<id>
  - `started_at` string, required
  - `finished_at` string, nullable
  - `score` number, nullable
  - `grade` 'A+' | 'A' | 'B' | 'C' | 'D' | 'F' | 'null', nullable
  - `conforms` boolean, nullable: Whether every applicable MUST of AgentReady v1.0 passed (null for ora rows)
  - `fetch_count` integer, nullable
  - `error` string, nullable
  - `domain` string, nullable
  - `summary` ReadinessSummary: The scan summary: score, grade, layers (Find / Read / Act with per-check status and points), actionable (ranked fixes with estimated gain), passing, bonusOpportunities, conformance (per AR-* requirement) and diff against the previous scan.
    - `engine` string, required
    - `domain` string, required
    - `scannedAt` string, date-time, required
    - `status` string
    - `score` number, nullable, required
    - `grade` string, nullable
    - `gradeLabel` string, nullable
    - `developerCapability` boolean
    - `layers` object[], required
    - `actionable` object[]
    - `conformance` object, nullable
    - `diff` object, nullable
  - `checks` object[]: Every check: id, layer, name, tier, bonus, maxScore, arIds, status, score, details, recommendation, evidence[]

## Other responses

- `401`: Missing or invalid API key (a malformed ftpk_ key never falls back to the demo workspace).
- `403`: The key does not include the aeo section
- `404`: Not found, or another client's scan
- `429`: Rate limit exceeded (120 requests per minute per key). Honour Retry-After / RateLimit-Reset.

---

[API](https://skmtc.dev/fractionalteams/apis/fractional-teams-portal-api.md) · [All operations](https://skmtc.dev/fractionalteams/apis/fractional-teams-portal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fractionalteams/apis/fractional-teams-portal-api/revisions/9f81154af4dc?raw)
