Cookbook
File a trademark
USPTO Section 1(a) or 1(b) application, specimen upload, monitoring through registration.
Last updated
USPTO Section 1(a) or 1(b) application, specimen upload, monitoring through registration.
Trigger
You want federal trademark protection.
Call sequence
1. Open application
POST /v1/trademarks { entity, mark, classes, basis: '1b' }2. Watch for office actions
// trademark.office_action3. File statement of use when in commerce
POST /v1/trademarks/{id}/statement_of_useIdempotency
Application idempotent on `(entity, mark, classes.sort())`.
Webhooks
| Event | Description |
|---|---|
trademark.filed | TEAS submitted. |
trademark.office_action | USPTO replied. |
trademark.registered | Registration certificate issued. |
Errors
| Status | Code | Description |
|---|---|---|
422 | specimen_invalid | USPTO rejected the specimen of use. |
Picking Nice classes
USPTO uses the Nice Classification system: 45 classes covering goods (1–34) and services (35–45). Common consumer-tech brand classes:
| Class | Coverage |
|---|---|
| 9 | Software, downloadable / SaaS interfaces |
| 25 | Apparel, footwear, headwear |
| 35 | Advertising, business services, retail / e-commerce |
| 41 | Education, training, entertainment |
| 42 | Technology services, SaaS (delivered as a service) |
For a software product with a consumer brand: 9, 35, 42 at minimum. For a physical product: add the relevant goods class.
USPTO search
POST /v1/entities/{entity_id}/trademarks/search
{
"mark": "Loomheart",
"classes": [25, 35, 42],
"jurisdiction": "US"
}Returns a TrademarkSearch (tms_*). The result field summarizes:
| Result | Meaning | Recommended action |
|---|---|---|
clear | No overlapping live marks in the queried classes | Proceed to filing |
minor_conflicts | Some overlapping marks but in different classes / different goods | Review conflicts[]; consult counsel; decide whether to proceed |
blocking_conflicts | At least one identical-or-similar live mark in an overlapping class | Rebrand and re-search, or work with counsel on a §2(d) argument |
The search is idempotent on (entity_id, mark, classes, jurisdiction, search_date) — re-running it the same day returns the existing snapshot
for free. Re-run before filing to confirm no late-filed marks have
appeared.
Filing bases
Section 1(a) — actual use
Use this when the mark is already in use in interstate commerce. Specimen and first-use dates required at filing.
POST /v1/entities/{entity_id}/trademarks
{
"mode": "file_via_matter",
"mark": "Loomheart",
"drawing_kind": "standard_character",
"classes": [
{
"class_number": 25,
"identification": "T-shirts; hats",
"identification_source": "acceptable_id_manual"
},
{
"class_number": 35,
"identification": "Online retail store services featuring textiles",
"identification_source": "custom"
}
],
"jurisdiction": "US",
"basis_of_filing": "actual_use",
"first_use_date": "2026-03-01",
"first_use_in_commerce_date": "2026-04-01",
"specimen_file_id": "file_<uploaded-screenshot>",
"related_search_id": "tms_<from-search>"
}Section 1(b) — intent to use
Use this when the mark hasn't launched yet. No specimen at filing; a Statement of Use is filed within 6 months of the Notice of Allowance.
POST /v1/entities/{entity_id}/trademarks
{
"mode": "file_via_matter",
"mark": "Loomheart",
"drawing_kind": "standard_character",
"classes": [...],
"jurisdiction": "US",
"basis_of_filing": "intent_to_use",
"related_search_id": "tms_<from-search>"
}Both modes return a Trademark (tmk_*) in pending_filing, advancing
to filed once USPTO assigns a serial number (via webhook).
Statement of Use (for 1(b))
After USPTO publishes the mark and the opposition window passes, status
moves to notice_of_allowance. File the SoU within 6 months:
POST /v1/entities/{entity_id}/trademarks/{tmk_id}/statement_of_use
{
"first_use_date": "2026-08-01",
"first_use_in_commerce_date": "2026-08-15",
"specimen_file_id": "file_<screenshot-of-product-with-mark>"
}Each 6-month extension carries an additional USPTO fee — call this endpoint with the same body to file the SoU before the next deadline.
Maintenance windows
Once status: registered, three maintenance windows compute on the
Compliance calendar:
- Section 8 — between years 5 and 6 post-registration
- Section 8 & 9 — every 10 years (years 9–10 of each cycle)
- Section 15 (optional) — after 5 continuous years (incontestability)
File each via fileTrademarkMaintenance.
Failing Section 8 or 8&9 cancels the registration — set up the
calendar reminders.
Cost preview before filing
POST /v1/entities/{entity_id}/trademarks?dry_run=true
{ ... }Returns the proposed Trademark with
application_attributes.estimated_fee_usd_cents populated. Surcharge
drivers (per USPTO's Jan-2025 fee schedule):
identification_source: customon any class- More than one class
claims_prior_registration: true- Lengthy goods/services descriptions
Recording externally-filed applications
If outside counsel or a trademark platform (Trademarkia, LegalZoom IP) files the application, record it on Matter for compliance-calendar tracking:
POST /v1/entities/{entity_id}/trademarks
{
"mode": "record_external",
"mark": "Loomheart",
"classes": [...],
"jurisdiction": "US",
"basis_of_filing": "actual_use",
"first_use_date": "...",
"first_use_in_commerce_date": "...",
"specimen_file_id": "file_...",
"serial_number": "<USPTO-assigned-serial>"
}Returns a Trademark in filed status. Maintenance windows compute the
same way as for Matter-filed applications.
See the Trademarks landing page for the full operation list.