---
title: "Get one annual report"
method: GET
path: "/v1/partner/companies/{companyId}/compliance/annual-reports/{annualReportId}"
tags: ["Annual Report Filing"]
---

# Get one annual report

`GET /v1/partner/companies/{companyId}/compliance/annual-reports/{annualReportId}`

## Request

- Base URL: `https://api.test.doola.com`
- URL: `https://api.test.doola.com/v1/partner/companies/{companyId}/compliance/annual-reports/{annualReportId}`
- Auth: API key in header `Authorization`

One of the company's annual reports with the answers on record for it. Read-only. A report that does not exist, belongs to another company, or is in a state this API does not publish are all 404: telling them apart would confirm that an id the caller may not read is nonetheless real.

## Path parameters

- `companyId` string, required
- `annualReportId` string, required

## Response `200`

The report and the answers on record for it.

- PartnerAnnualReportResponse: One annual report and the answers on record for it.
  - `annualReportId` string: Annual report ID (KSUID), as the submission returned it and as confirm addresses it.
  - `doolaCompanyId` string: doola company ID (KSUID).
  - `fiscalYear` integer: Fiscal year the report covers.
  - `state` string: US state the report is filed in.
  - `entityType` 'LLC' | 'CCorp': Entity type the report was filed for.
  - `status` 'FILLED' | 'IN_PROGRESS' | 'AWAITING_INFORMATION' | 'FILING_COMPLETED': Where the report stands. Same vocabulary as the list.
  - `priceInCents` integer, nullable: The state fee fixed on the report in whole US cents, which doola settles with you outside this API. Null while doola has not priced it.
  - `submittedAt` string, nullable: Date the report was handed to doola's filing pipeline (yyyy-MM-dd). Often null even for a filed report; read status for where the report stands.
  - `createdAt` string, date-time, nullable: When the report was first recorded. Null if the row carries no timestamp.
  - `updatedAt` string, date-time, nullable: When the report last changed. Null if the row carries no timestamp.
  - `answers` PartnerRecordedAnswerDto[]: The answers on record, addressed by the field ids the requirements published. Empty for a state that asks no questions, which is most of them.
    - `fieldId` string: Field id, as published by the requirements endpoint's fields[].fieldId. An answer stays on record under it after doola stops asking that question, so it may name a field the requirements no longer publish.
    - `value` string, nullable: What was answered, as given.

## Other responses

- `404`: E_COMPANY_NOT_FOUND when the company does not exist or is not owned by the calling partner; E_NOT_FOUND when no such report is readable for that company.

## Changes

- **2026-11-03** `f607744a8927`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/doola/apis/doola-partner-api/changes/v1/partner/companies/:companyId/compliance/annual-reports/:annualReportId/get.md)

---

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