> ## 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.

> ## Agent Instructions
> Authenticate with the raw API key in the Authorization header. Never add a Bearer prefix.
> Use the sandbox base URL https://api.test.doola.com and a dk_test_ key in examples unless the user asks for production.
> Send an Idempotency-Key header on POST /v1/partner/customers and POST /v1/partner/companies. No other endpoint takes one.
> Every response is wrapped as {payload, error}. Read fields from payload and branch on error.code, never on the message.
> Drive formation progress from webhooks plus a reconciliation sweep, never a polling loop.
> Embedded SDK (@doola/js): the dk_ key stays on the server and mints customer sessions; the browser gets only a pk_ key and the session. onFormed carries only companyId and can fire more than once. Before charging, read the company with the dk_ key, require formationSubmissionStatus AWAITING_PAYMENT, check the owner's email, and price on the server. Then POST payment-confirmed, which answers 200 with an empty body, and replace the SDK element with a new doola.create() (never append a second one).
> The doola Formation MCP server at https://mcp.doola.com is for founders forming their own company with their own doola account. Partners integrate the Partner API or the Embedded SDK. The /mcp endpoint on this docs site only searches these docs.
> For a full capability summary with the rules above, read https://docs.doola.com/skill.md.

# Get a company's compliance calendar

> Returns the company's compliance obligations. Today this is the single annual report, with its next due date and a derived status (UPCOMING, OVERDUE, NOT_YET_DUE, or UNSUPPORTED_STATE). Read-only — never triggers filing or recomputation. 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/calendar
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 your webhook endpoint 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: Annual Report Filing
    description: >-
      File a company's annual report with its state: what to collect, what it
      costs, submission, confirmation and status.
  - name: Customer sessions
    description: Mint the token the doola SDK uses in your customer's browser.
  - name: Signatures
    description: Request embedded signing sessions for pending company documents.
  - name: Companies
    description: Create companies for your customers, then track formation status.
  - name: SDK
    description: Keys for the doola Embedded SDK.
  - 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/calendar:
    get:
      tags:
        - Compliance
      summary: Get a company's compliance calendar
      description: >-
        Returns the company's compliance obligations. Today this is the single
        annual report, with its next due date and a derived status (UPCOMING,
        OVERDUE, NOT_YET_DUE, or UNSUPPORTED_STATE). Read-only — never triggers
        filing or recomputation. Returns 404 when the company does not exist or
        is not owned by the calling partner.
      operationId: getComplianceCalendar
      parameters:
        - name: companyId
          in: path
          description: doola company ID (KSUID).
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PartnerComplianceCalendarResponse'
components:
  schemas:
    PartnerComplianceCalendarResponse:
      type: object
      description: A company's compliance calendar — its tracked obligations.
      properties:
        events:
          type: array
          description: >-
            Tracked compliance obligations. Always includes the annual-report
            event, even when the state is unsupported or the company is too new
            — the event's status carries the reason, so an empty list never has
            to be disambiguated.
          items:
            $ref: '#/components/schemas/PartnerComplianceEventDto'
    PartnerComplianceEventDto:
      type: object
      description: A compliance obligation with its next due date and derived status.
      properties:
        type:
          type: string
          description: Obligation type. Only the annual report is returned today.
          enum:
            - ANNUAL_REPORT
          example: ANNUAL_REPORT
        state:
          type:
            - string
            - 'null'
          description: US state the obligation applies to.
          example: CA
        nextDueDate:
          type:
            - string
            - 'null'
          description: >-
            Next due date (yyyy-MM-dd). Null when there is no concrete date —
            UNSUPPORTED_STATE or NOT_YET_DUE.
          example: '2026-11-30'
        lastFiledDate:
          type:
            - string
            - 'null'
          description: >-
            Date the obligation was last filed (yyyy-MM-dd), or null if never
            filed. Included so a rolled-forward due date is explainable.
          example: '2025-11-15'
        status:
          type: string
          description: >-
            Derived status. UPCOMING: a due date is set in the future. OVERDUE:
            the due date passed and it was not filed. NOT_YET_DUE: the company's
            formation filing is not yet complete. UNSUPPORTED_STATE: doola does
            not track an annual report for the company's state.
          enum:
            - UPCOMING
            - OVERDUE
            - NOT_YET_DUE
            - UNSUPPORTED_STATE
          example: UPCOMING
  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

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.