# Update a formation

Source: https://joinopenfile.com/docs/api/update-formation
Index: https://joinopenfile.com/llms.txt

`PATCH /api/v1/formations/{id}`

Changes the fields you send on a draft. Fails once the owner has signed.

Needs the [token](https://joinopenfile.com/docs/authentication.md) for this application or filing.

In the MCP server this is `update_formation`.

## Example

```bash
curl -X PATCH https://api.joinopenfile.com/v1/formations/$ID \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
  "package": "premium"
}'
```

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | Formation id. |

## Body

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `entity` | `llc`, `corp`, `scorp`, `nonprofit` | No | The kind of company. |
| `state` | string | No | The state to form in, two letters. |
| `name` | string | No | The company name, without LLC or Inc. |
| `designator` | string | No | The ending, like `LLC`. `get_state` lists what the state accepts. |
| `backup_name` | string | No | A second choice, used if the state won't take the first. |
| `purpose` | string | No | The business purpose. A nonprofit must state a specific one. |
| `management` | `member`, `manager` | No | LLCs only: run by its members or by managers. |
| `shares` | string | No | Corporations only: authorized shares, digits only. |
| `par_value` | string | No | Corporations only: par value in dollars. Empty for no par. |
| `package` | `basic`, `pro`, `premium` | No | The package. |
| `ein` | boolean | No | Basic only: add the EIN. Pro and Premium include it. |
| `agreement` | boolean | No | Basic only: add the operating agreement or bylaws. Pro and Premium include them. |
| `expedite` | boolean | No | Pay the state for faster processing, where it offers that. |
| `members` | integer | No | LLC members, in states that charge per member. |
| `county` | string | No | County, where publication depends on it. |
| `add_ons` | array of string | No | Add-on ids to include. `list_services` shows which can be added. Recurring ones can't: only the owner can start those. |
| `contact` | object | No | Who to reach about the order. |
| `contact.name` | string | No | Full name. |
| `contact.email` | string | No | Email address. |
| `contact.phone` | string | No | Phone number. |
| `principal` | object | No | The company's principal address. The owner can also add it when they review the order. |
| `principal.street` | string | No | Street. |
| `principal.city` | string | No | City. |
| `principal.state` | string | No | Two-letter state. |
| `principal.zip` | string | No | ZIP code. |
| `owners` | array of object | No | An LLC's members or a corporation's directors. The owner can also add these when they review the order. |
| `registered_agent` | object | No | The registered agent the owner named. |
| `registered_agent.name` | string | No | The agent's name. |
| `registered_agent.address` | object | No | A street address. |
| `registered_agent.address.street` | string | No | Street. |
| `registered_agent.address.city` | string | No | City. |
| `registered_agent.address.state` | string | No | Two-letter state. |
| `registered_agent.address.zip` | string | No | ZIP code. |

## Errors

| Status | When |
| --- | --- |
| `400` | Invalid input. |
| `404` | Not found, or the token is wrong. |
| `409` | Not allowed in this state. |
| `429` | Too many requests. |

The body is the [error shape](https://joinopenfile.com/docs/errors.md).
