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 endpointsEverything 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:
entityType—LLCorCORP(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.