# Update an application

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

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

Changes the fields you send. 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_application`.

## Example

```bash
curl -X PATCH https://api.joinopenfile.com/v1/applications/$ID \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
  "basis": "use",
  "first_use": "2026-03",
  "first_use_in_commerce": "2026-04"
}'
```

## Parameters

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

## Body

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `mark` | string | No | The name, slogan or wording to protect, exactly as the person wants it. |
| `kind` | `name`, `slogan`, `logo` | No | What the mark is. A logo is filed as words first. |
| `description` | string | No | What's sold under the mark, in the person's words. |
| `website` | string | No | The brand's website. |
| `classes` | array of object | No | The classes to file in, 1 to 10. |
| `owner` | object | No | Who will own the mark. On an update, only the fields you send change. |
| `owner.type` | `individual`, `llc`, `corporation`, `partnership` | No | The owner's legal form. |
| `owner.name` | string | No | The owner's exact legal name. |
| `owner.citizenship` | string | No | Individual owners: citizenship. |
| `owner.state_of_organization` | string | No | Company owners: the state it was formed in. |
| `owner.street` | string | No | Street address where the owner lives or is based. Not a PO box. |
| `owner.city` | string | No | City. |
| `owner.state` | string | No | State. |
| `owner.zip` | string | No | 5-digit ZIP code. |
| `owner.email` | string | No | Where we reach the owner about this application. |
| `basis` | `use`, `itu` | No | `use`: already selling under the mark. `itu`: planning to, with a real intent. |
| `first_use` | string | No | With `use`: first used anywhere, as `YYYY-MM` or `YYYY-MM-DD`. |
| `first_use_in_commerce` | string | No | With `use`: first sold across state lines, as `YYYY-MM` or `YYYY-MM-DD`. |

## Response

`200`

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | No | Application id. |
| `object` | `application` | No | Always `application`. |
| `status` | `draft`, `signed`, `expired` | No | `draft`: waiting for the owner. `signed`: the owner signed and it went to the attorney. `expired`: 30 days passed unsigned. |
| `ready` | boolean | No | True when nothing is missing and the owner can sign. |
| `issues` | array of object | No | What's missing, each with the field and what to ask. |
| `review_url` | string | No | Send this to the owner: it opens the application for them to check and sign. Contains the token. |
| `token` | string | No | Only on create. Keep it: reads and updates need it. |
| `application` | object | No | Every field is optional, so an application can be built up as the person answers. Send only what the person told you or confirmed. |
| `application.mark` | string | No | The name, slogan or wording to protect, exactly as the person wants it. |
| `application.kind` | `name`, `slogan`, `logo` | No | What the mark is. A logo is filed as words first. |
| `application.description` | string | No | What's sold under the mark, in the person's words. |
| `application.website` | string | No | The brand's website. |
| `application.classes` | array of object | No | The classes to file in, 1 to 10. |
| `application.owner` | object | No | Who will own the mark. On an update, only the fields you send change. |
| `application.owner.type` | `individual`, `llc`, `corporation`, `partnership` | No | The owner's legal form. |
| `application.owner.name` | string | No | The owner's exact legal name. |
| `application.owner.citizenship` | string | No | Individual owners: citizenship. |
| `application.owner.state_of_organization` | string | No | Company owners: the state it was formed in. |
| `application.owner.street` | string | No | Street address where the owner lives or is based. Not a PO box. |
| `application.owner.city` | string | No | City. |
| `application.owner.state` | string | No | State. |
| `application.owner.zip` | string | No | 5-digit ZIP code. |
| `application.owner.email` | string | No | Where we reach the owner about this application. |
| `application.basis` | `use`, `itu` | No | `use`: already selling under the mark. `itu`: planning to, with a real intent. |
| `application.first_use` | string | No | With `use`: first used anywhere, as `YYYY-MM` or `YYYY-MM-DD`. |
| `application.first_use_in_commerce` | string | No | With `use`: first sold across state lines, as `YYYY-MM` or `YYYY-MM-DD`. |
| `quote` | object | No |  |
| `quote.object` | `quote` | No | Always `quote`. |
| `quote.currency` | string | No | Always `usd`. |
| `quote.classes` | integer | No | Classes priced. |
| `quote.lines` | array of object | No | Every fee, one line each. |
| `quote.total` | integer | No | Sum of `lines`, in dollars. |
| `checks` | array of object | No | Refusal grounds this mark may run into. Empty when none came up. |
| `filing` | object | No | Once signed: the filing, with its own `token`. |
| `filing.id` | string | No | Filing id. |
| `filing.object` | `filing` | No | Always `filing`. |
| `filing.status` | `received`, `changes`, `approved`, `filed`, `declined` | No | Where the filing is. |
| `filing.status_label` | string | No | The status in plain words. |
| `filing.note` | string | No | From the attorney, when the status is `changes` or `declined`. |
| `filing.mark` | string | No | The mark. |
| `filing.owner` | string | No | The owner. |
| `filing.basis` | `use`, `itu` | No | Filing basis. |
| `filing.classes` | array of object | No | The classes filed. |
| `filing.has_specimen` | boolean | No | True once a specimen is attached. |
| `filing.signed_by` | string | No | Who signed. |
| `filing.paid` | boolean | No | True once payment is recorded. |
| `filing.serial` | string | No | USPTO serial number, once filed. |
| `filing.filed_at` | string | No | When it was filed. |
| `filing.uspto_url` | string | No | The USPTO's record, once filed. |
| `filing.status_url` | string | No | The customer's status link. It contains the token. |
| `filing.created_at` | string | No | When it was signed. |
| `created_at` | string | No | When it was created. |
| `updated_at` | string | No | When it last changed. |
| `expires_at` | string | No | When an unsigned draft expires. |

## 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).
