FileForms
Core Concepts

Data Model

How organizations, users, companies, orders, and documents relate.

Five resources make up the API's world:

Your organization
 ├── Users            (your customers)
 │     └── Companies  (a user can administer many companies)
 │           ├── Orders     (one per product ordered)
 │           └── Documents  (filed articles, confirmations, RA mail, ...)
 └── Webhook endpoints

Everything is scoped to your organization. Your API key can only see and touch users, companies, orders, and documents that belong to your organization — there is no cross-tenant access in either direction.

Users

A user is the person (usually your customer) who owns companies and receives any enabled email notifications. Users are identified by user_... ids and can be fetched by id or email: GET /users/{userIdOrEmail}.

Emails and phone numbers are unique across FileForms, so POST /users returns 409 if either already exists.

Companies

A company is the legal entity filings are made for — identified by a comp_... id or its URL slug (both work in GET /companies/{companyIdOrSlug}). Key attributes:

  • entityTypeLLC or CORP (the only supported types)
  • structureType (MEMBER/MANAGER) for LLCs; taxElection (C Corporation/S Corporation) for CORPs
  • Principal and mailing addresses, officers, optional EIN and trade name

Companies are created two ways: explicitly via POST /companies (for an existing entity your customer already owns), or implicitly by a formation order (POST /orders with a formation object — see Formations).

A company is linked to the user who administers it; a user can administer many companies.

Orders

An order (order_...) is one product purchased for one company: a formation, an annual report, an EIN, registered agent service, or a foreign qualification. One POST /orders call can create several orders at once — e.g. a formation + EIN + registered agent is three order items in one request.

Every order carries a filingStatus that progresses as the filing moves through the state — covered in Orders & filings.

There is no list-orders endpoint

Orders are created via the API and tracked via webhooks — filing.status_changed tells you every time an order's status changes. Store the orderIds from order-creation responses and reconcile against webhook events.

Documents

Documents (doc_...) are the files filings produce: articles of organization/incorporation, state confirmations, EIN letters, certificates, and registered agent mail. Each belongs to a company.

You learn about new documents from the document.uploaded webhook, which includes the orderId it relates to. Fetch a fresh download link any time with GET /documents/{documentId} — download URLs expire after one hour.

State registrations

Behind the scenes, each company tracks its registration per state — whether it's domestic (formed there) or foreign (qualified there), its registered agent, and its annual report subscriptions. You don't manipulate this resource directly; it's maintained by the orders you place. It explains one behavior worth knowing: ordering registered agent service for a state where the company already has an active one is a no-op rather than a duplicate purchase.

On this page