Skip to main content
POST
Form a corporation

Authorizations

Authorization
string
header
required

Enter your API key in the format: sk_test_xxxxx or sk_live_xxxxx

Body

application/json
jurisdiction
string
required

Jurisdiction (ISO 3166-2)

Example:

"US-DE"

entity_name
string
required

Legal name of the corporation being formed

Example:

"Acme Corp Inc."

purpose
string
required

Purpose clause for the articles of incorporation. Some states require user-supplied text; others (notably Delaware) use a statutory boilerplate clause that Palm fills in automatically. Distinct from the EIN principal_activity / principal_activity_detail fields, which describe the business's actual activity for IRS purposes.

Example:

"Any lawful purpose"

email
string
required

Business email address

Example:

"info@acme.com"

contact
object
required

Primary contact for questions about this filing. Used by Palm operations; never sent on the filing itself.

principal_address
object
required

Principal office address

incorporators
object[]
required

Persons or entities executing the articles of incorporation (incorporators). At least one required.

stock_structure
object
required

Authorized capital stock structure

phone
string

Business phone number

Example:

"919-555-1234"

website
string

Business website

Example:

"https://acme.com"

effective_date
string

Delayed effective date (YYYY-MM-DD). If omitted, defaults to the date the formation request is received by Palm.

Example:

"2026-05-01"

mailing_address
object

Mailing address if different from the principal office. Defaults to principal_address when omitted.

initial_directors
object[]

Initial board of directors. Optional on most state formation forms but useful for downstream records. Corporate officers go in initial_officers, not here.

initial_officers
object[]

Initial corporate officers (president, secretary, treasurer, etc.). Optional on most state formation forms; required by some (e.g. MA). The office is carried in each officer's typed role.

registered_agent
object

Registered agent. If provided, your own registered agent is used on the filing. If omitted, Palm provides registered agent service.

ein
object

Bundle an EIN application with the formation. Palm submits to IRS after the formation succeeds.

metadata
object

Partner-defined metadata. Round-tripped on webhooks and the filing record.

expedited_tier
string

Expedited processing tier. Omit for standard processing. Valid values are jurisdiction-specific — discover them via GET /v1/filing/formation/requirement (expedited_tiers) and price them via GET /v1/filing/formation/fee (expedited_tiers). Rejected with 400 if the value is not offered by the jurisdiction.

Example:

"same_day"

Response

Formation filing created

id
string<uuid>
required

Unique identifier for the resource

Example:

"123e4567-e89b-12d3-a456-426614174000"

object
enum<string>
required

Object type

Available options:
filing
Example:

"filing"

mode
enum<string>
required

Whether this resource was created with test or live credentials. Test and live data are fully isolated — a test resource never appears in live results and vice versa.

Available options:
test,
live
Example:

"live"

created_at
string<date-time>
required

ISO 8601 timestamp of when the resource was created

Example:

"2025-10-24T10:30:00Z"

updated_at
string<date-time>
required

ISO 8601 timestamp of when the resource was last updated

Example:

"2025-10-24T15:45:00Z"

metadata
object
required

Store up to 50 custom key-value pairs for application-specific data. Useful for storing references to external systems, feature flags, or other custom attributes.

Example:
type
enum<string>
required

Filing type

Available options:
formation,
ein,
amendment,
scorp_election
status
enum<string>
required

Current status

Available options:
queued,
ready_to_file,
processing,
filed,
completed,
rejected,
canceled,
failed
entity_type
enum<string>

Entity type (for formations)

Available options:
llc,
pllc,
corporation,
pcorporation
jurisdiction
string

Jurisdiction (ISO 3166-2)

Example:

"US-NC"

name
string

Business name for the filing

Example:

"Acme Holdings LLC"

expedited_tier
string

Expedited processing tier requested for this filing, or null for standard processing. Only set on formations submitted with an expedited_tier.

Example:

"same_day"

business_id
string<uuid>

Linked business ID

result
object

Filing result — populated on completion, null until then. Shape depends on the filing type: formation → { registration_number, formation_date }; EIN → { ein_number, entity_name }. Other filing types have no result.

parent_filing_id
string<uuid>

Parent filing ID (for bundled EIN/RA)

Bundle of obligations tracked under this formation, each with its own object type and status: filings (state registration, EIN) and the registered agent (id is the business, resolvable at GET /business/:id/registered-agent).

documents
object[]

Documents associated with this filing

fee
object | null

Fee components keyed by type (base, dynamic, late, credit_card, ach), plus a convenience total grand total (assumes credit-card payment). Only present components are included. When items is set, it lists each evaluated rule for itemized rendering — the component-keyed values are the sums across those items.

status_reason
string

Reason the filing was canceled (partner request, parent off-boarded, duplicate, etc.). Only present when status is canceled.

canceled_by
string

Role that initiated the cancellation. One of: partner, palm. Only present when status is canceled.

canceled_at
string<date-time>

Timestamp the filing was canceled

cases
object[]

Cases attached to this filing. One entry per partner-visible case, in chronological order. Each case carries a typed request payload describing what Palm needs and, once submitted, a typed response. Partners respond via POST /v1/case/:case_id/response. An entry with status=needs_response is an outstanding ask — its presence is the signal that the filing needs partner action.