> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get the annual report requirements for a company

> Returns the fields the partner must collect before submitting the company's annual report, derived from its state and entity type, together with the due date from the compliance calendar. Read-only. Most states ask no questions at all, so for most companies the response carries only the company details. A state that requires no annual report answers 200 with filingRequired false and an empty field list. Returns 404 when the company does not exist or is not owned by the calling partner.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/partner/companies/{companyId}/compliance/annual-report/requirements
openapi: 3.1.0
info:
  title: doola Partner API
  description: >-
    REST API for doola partners to create and manage customers and companies,
    retrieve formation documents, and look up reference data.


    Authenticate every request with a partner API key in the `Authorization`
    header. Generate keys and manage webhooks and event subscriptions in the
    doola Partner Portal.
  contact:
    name: doola
    url: https://www.doola.com
  version: v1
servers:
  - url: https://api.test.doola.com
    description: Sandbox — use test keys (dk_test_…)
  - url: https://api.doola.com
    description: Production — use live keys (dk_live_…)
security:
  - PartnerApiKey: []
tags:
  - name: Playground (sandbox only)
    description: >-
      Sandbox-only helpers to drive a test company through the Formation and
      EinCreation milestones end to end.
  - name: Required Actions
    description: >-
      Actions doola needs you to take on a company, such as supplying new name
      options after a state rejection.
  - name: Customers
    description: Create and look up customers under your partner tenant.
  - name: Documents
    description: List and download a company's formation documents.
  - name: Compliance
    description: Track a company's compliance obligations and their due dates.
  - name: Signatures
    description: Request embedded signing sessions for pending company documents.
  - name: Companies
    description: Create companies for your customers, then track formation status.
  - name: Reference data
    description: >-
      Static lookups for building company-creation requests: NAICS codes,
      states, countries, and state filing fees.
paths:
  /v1/partner/companies/{companyId}/compliance/annual-report/requirements:
    get:
      tags:
        - Compliance
      summary: Get the annual report requirements for a company
      description: >-
        Returns the fields the partner must collect before submitting the
        company's annual report, derived from its state and entity type,
        together with the due date from the compliance calendar. Read-only. Most
        states ask no questions at all, so for most companies the response
        carries only the company details. A state that requires no annual report
        answers 200 with filingRequired false and an empty field list. Returns
        404 when the company does not exist or is not owned by the calling
        partner.
      operationId: getRequirements
      parameters:
        - name: companyId
          in: path
          description: doola company ID (KSUID).
          required: true
          schema:
            type: string
        - name: fiscalYear
          in: query
          description: Fiscal year the report covers. Defaults to the current year.
          required: false
          schema:
            type: integer
            format: int32
            maximum: 2100
            minimum: 2000
      responses:
        '200':
          description: >-
            The fields to collect, with the due date. Only a handful of states
            add question fields on top of the company details. Read
            filingRequired first: when false there is no report to file and the
            field list is empty.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PartnerAnnualReportRequirementsResponse'
        '400':
          description: 'E_VALIDATION_FAILED: fiscalYear is outside the accepted range.'
        '404':
          description: >-
            E_COMPANY_NOT_FOUND: the company does not exist, or is not owned by
            the calling partner.
        '422':
          description: >-
            E_STATE_NOT_SUPPORTED: doola holds no annual-report data for the
            company's state and entity type. Should not occur for a company
            created through this API; a state that files no annual report
            answers 200 with filingRequired false.
components:
  schemas:
    PartnerAnnualReportRequirementsResponse:
      type: object
      description: What the company's state asks for on its annual report.
      properties:
        doolaCompanyId:
          type: string
          description: doola company ID (KSUID).
          example: 2Ns8vJqZ1lQwErTyUiOpAsDfGhJ
        state:
          type: string
          description: US state the report is filed in.
          example: WY
        entityType:
          type: string
          description: Entity type the field list applies to.
          enum:
            - LLC
            - CCorp
          example: LLC
        fiscalYear:
          type: integer
          format: int32
          description: Fiscal year the requirements apply to.
          example: 2026
        filingRequired:
          type: boolean
          description: >-
            Whether the state requires an annual report at all. False comes with
            an empty fields list because there is nothing to file - not because
            the state asks for nothing.
          example: true
        dueDate:
          type:
            - string
            - 'null'
          description: >-
            Due date from the compliance calendar (yyyy-MM-dd), or null when
            there is no concrete date yet.
          example: '2026-11-30'
        fields:
          type: array
          description: >-
            Fields to collect, in the order to present them. Always carries the
            company details; question fields appear only for the few states that
            ask any, which today is a handful. Empty when filingRequired is
            false.
          items:
            $ref: '#/components/schemas/PartnerRequirementFieldDto'
    PartnerRequirementFieldDto:
      type: object
      description: One field to collect from the customer before submitting the filing.
      properties:
        id:
          type: string
          description: Field id. Answers are keyed by this value.
          example: Q16
        label:
          type: string
          description: Label to show the customer.
          example: Do you hold assets?
        type:
          type: string
          description: >-
            How to render the field. ADDRESS means a structured address rather
            than a string. DATE and BOOLEAN are published so adding one later is
            not a breaking change; no field uses them today.
          enum:
            - TEXT
            - NUMBER
            - SELECT
            - RADIO
            - AMOUNT
            - DATE
            - BOOLEAN
            - ADDRESS
          example: RADIO
        group:
          type: string
          description: >-
            Where the field comes from. QUESTION is asked by the state;
            COMPANY_DETAIL is company data doola already holds.
          enum:
            - QUESTION
            - COMPANY_DETAIL
          example: QUESTION
        required:
          type: boolean
          description: Whether the filing is rejected without this field.
          example: true
        options:
          type:
            - array
            - 'null'
          description: Allowed values for SELECT and RADIO, null otherwise.
          example:
            - 'yes'
            - 'no'
          items:
            type: string
        dependsOn:
          $ref: '#/components/schemas/PartnerFieldDependencyDto'
          type: 'null'
          description: Set when the field only applies given another field's answer.
    PartnerFieldDependencyDto:
      type: object
      description: The answer another field must carry before this one applies.
      properties:
        fieldId:
          type: string
          description: The id of the field this one waits on, as it appears in fields[].id.
          example: Q16
        answer:
          type: string
          description: The answer that field must carry.
          example: 'yes'
  securitySchemes:
    PartnerApiKey:
      type: apiKey
      description: >-
        Partner API key. Send the raw key as the `Authorization` header value —
        e.g. `dk_test_…` in sandbox or `dk_live_…` in production. Generate and
        rotate keys in the doola Partner Portal.
      name: Authorization
      in: header

````