Skip to main content
This endpoint is read-only. It describes what to collect; it neither starts a filing nor stores anything.
An annual report asks for two different kinds of information: questions the state puts to the company, and company details doola already holds. This endpoint returns both as one ordered list, so you render the list you are given rather than deriving it from the state yourself. Most states ask no questions at all. For those companies the response carries only the company details, which is the common case rather than an edge one.

Retrieving the requirements

The full schema is in the Compliance section of the API reference. A Wyoming LLC, abbreviated:

Field groups

Every entry carries a group, and the two groups behave differently. Read the group rather than guessing from the id. Questions are listed first, then the company details.

Required and already known

required tells you whether the filing is rejected without the field. A COMPANY_DETAIL with required: false is data doola already holds, so you do not have to ask the customer for it. A COMPANY_DETAIL with required: true is data we do not hold and cannot file without; today that is the phone number and physical address of a Delaware C-corp.

When no report is filed at all

Four states — Alabama, New Mexico, Ohio and South Carolina — require no annual report. For a company in one of those, this endpoint answers 200 with filingRequired: false and an empty fields list. There is nothing to collect because there is nothing to file.
fields: [] means two different things, and filingRequired is what separates them. With filingRequired: true it means the state asks nothing beyond the company details — but the company details are always appended, so that case never actually produces an empty list. With filingRequired: false the list is empty because no filing exists.
With filingRequired: true, fields is never empty: the company details are always appended. A state that asks no questions produces a response carrying only the details.
What the state charges is a separate call: Annual report fee. It reports the same filingRequired, and answers 422 on the same condition, because both read the same source.
Submitting the collected answers is a separate endpoint that is not available yet. Today this endpoint tells you what an annual report will ask for, so you can prepare the collection ahead of it.

Rendering a field

Treat the list as data. New type values and new fields are added over time, so a client that switches on a closed set of ids will break; one that renders whatever it is handed will not.

Errors

422 should not occur for a company created through this API. Every US state and DC is covered for both LLC and CCorp, so it is declared for completeness. A state that simply files no annual report is not a 422: it answers 200 with filingRequired: false.
Do not derive the requirements from the compliance calendar, or the other way round. The two answer different questions from different sources: whether doola files an annual report for the state, and whether an obligation is currently tracked for the company. For a small number of states they do not line up, so a tracked due date is not a promise that this endpoint returns a field list, and a 422 here is not a promise that the calendar reports the state as unsupported. Ownership is enforced the same way across the Partner API: a company that exists but isn’t yours returns 404, never 403, so existence cannot be probed across partners. See Errors.