---
title: "Run Project Doctor"
method: GET
path: "/v2/projects/{id}/doctor"
tags: ["Projects V2"]
---

# Run Project Doctor

`GET /v2/projects/{id}/doctor`

Runs a battery of configuration diagnostics across every application in the project (App Store Connect API key, IAP shared secret, product import status, ASC product readiness, revenue tracking) and returns both a structured list of check results and a rendered markdown report. Intended for agents and humans triaging onboarding/configuration issues. Requires projects:read scope.

## Path parameters

- `id` string, required — Project ID

## Response `200`

DoctorReport

- DoctorReport
  - `object` 'doctor_report', required — Object type, always `doctor_report`.
  - `project_id` string, required — Project this report was generated for.
  - `generated_at` string, required — ISO 8601 timestamp of when the report was generated.
  - `summary` DoctorReportSummary, required
    - `errors` number, required
    - `warnings` number, required
    - `infos` number, required
    - `passed` number, required
  - `checks` DoctorCheckResult[], required — Structured check results. Use this to react programmatically; use `markdown` for a ready-to-read report.
    - `id` string, required — Stable identifier for the check, e.g. `ios.asc_api_key`. Group checks by id to track them over time.
    - `title` string, required — Human-readable title for the check result.
    - `application_id` string, nullable, required — a string to be decoded into a number
    - `platform` union, required — Platform of the application this result applies to, if any.
      - 'ios' — iOS (App Store)
      - 'android' — Android (Google Play)
      - 'flutter' — Flutter (legacy, read-only - cannot be created via API)
      - 'react_native' — React Native (legacy, read-only - cannot be created via API)
      - 'web' — Web (Stripe)
      - 'promotional' — Promotional offers application (read-only - cannot be created via API)
      - 'webapp' — Web App (Web SDK) (read-only - cannot be created via API)
    - `severity` 'error' | 'warning' | 'info' | 'ok', required — Severity of the check result. `error` blocks a healthy configuration; `warning` is a soft issue you should look at; `info` is informational; `ok` means the check passed.
    - `priority` 'p0' | 'p1' | 'p2' | 'p3', required — Priority used to sort/group checks in the report. `p0` is most urgent; `p3` is informational.
    - `passed` boolean, required — Whether the check considers the configuration healthy.
    - `message` string, required — Short description of the finding, suitable for inclusion in a markdown report.
    - `remediation` string, nullable, required — Concrete steps the operator/agent can take to fix this.
    - `docs_url` string, nullable, required — Link to Superwall documentation for the relevant topic.
    - `metadata` object, required — Free-form structured data about the finding (e.g. product identifier, ASC state).
  - `markdown` string, required — Markdown-rendered version of the report, ready to present to a human or LLM agent.

## Other responses

- `400` — The request did not match the expected schema
- `401` — No API key was provided in the request
- `403` — The API key does not have permission to perform this action
- `404` — The requested resource was not found
- `429` — Too many requests have been made in a short period
- `500` — An unexpected error occurred on the server

---

[API](https://skmtc.dev/superwall/apis/superwall-api-v2.md) · [All operations](https://skmtc.dev/superwall/apis/superwall-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/superwall/superwall-api-v2/revisions/44900ad77d2c/schema)
