---
title: "AI design review: what the solved numbers mean, then what to change"
method: POST
path: "/v1/ai/review"
tags: ["AI"]
---

# AI design review: what the solved numbers mean, then what to change

`POST /v1/ai/review`

## Request

- Base URL: `https://electronics-architect.com`
- URL: `https://electronics-architect.com/v1/ai/review`
- Auth: HTTP bearer

Scope: `ai`. Decrements the monthly AI-analysis counter (Pro 25, Team 100; an account with its own AI key is not metered). At most 20 calls an hour per account through the API, across all its keys (429 RATE_LIMITED). At most 3 reviews run at once per account on the server that takes the request, the editor's AI reviews included; a 4th is 429 SOLVE_IN_PROGRESS with `Retry-After: 30` and does not count against the hourly limit. Mode `review` — the plain-English read of the results first, then the recommended topology, derating and thermal changes, in one call. Send the design document: the review solves it (as given, at `options.ambientTemperature` °C, default 25) and works out every part's worst-case input (each battery at full charge, every tolerance corner). Every part a suggestion names is checked against the worst case where it would go; one rated below it is moved to `rejectedSuggestions` with its `ratingCheck`, and `ratingBasis` says what the check stood on. A solve result is accepted too, but carries no wiring, so it is checked at its one operating point only.

## Request body

- object: The design document to review (preferred), or a solve result.
  - `design` Design, required (unresolved $ref)
  - `options` object
    - `ambientTemperature` number: Ambient in °C for the review's own solve of a design document. Default 25.

## Response `200`

Summary and suggestions, after the rating check.

- object
  - `summary` string
  - `suggestions` object[]
  - `rejectedSuggestions` object[]
  - `ratingBasis` 'worst-case' | 'operating-point' | 'null', nullable
  - `remaining` unknown
  - `limit` unknown
  - `model` string
  - `cached` boolean

## Other responses

- `400`: INVALID_REQUEST.
- `401`: No key, a browser token instead of a key, an unknown key, or a revoked key (code KEY_REVOKED).
- `402`: QUOTA_EXHAUSTED.
- `403`: The key lacks a required scope (INSUFFICIENT_SCOPE), or the call needs a plan the account does not have (PLAN_REQUIRED): on the Free plan, compare, exports, Monte Carlo jobs, AI synthesis, a design with more than one sheet, or a save, share or key past the Free limits; or a team key whose team is no longer paid for.
- `429`: RATE_LIMITED: the key's per-minute allowance is used up (or, before any key is recognised, too many requests from one address presented an unknown or revoked key). On the routes that solve inside the request (solve, verify, derating, compare, exports, ai/review, ai/synthesize) it can also be SOLVE_IN_PROGRESS: this account already has 3 calls of that kind running on the server that took the request (solves, AI reviews and syntheses are each counted separately). `Retry-After` is set either way; for SOLVE_IN_PROGRESS it is 2 s for solves and 30 s for AI reviews and syntheses.
- `503`: SERVICE_UNAVAILABLE — AI is not configured on this deployment.

---

[API](https://skmtc.dev/electronics-architect/apis/electronics-architect-api.md) · [All operations](https://skmtc.dev/electronics-architect/apis/electronics-architect-api/llms.txt) · [OpenAPI document](https://skmtc.dev/electronics-architect/apis/electronics-architect-api/revisions/98066184ba67?raw)
