filings.legal
Preview build

API REFERENCE

Every route, from one manifest.

Generated from the same routes manifest the surface ships — path, method, and request/response examples as JSON. The base path is this host; requests and responses are application/json unless noted.

Reads

Reading a filing’s status is never reserved — keyless from the first call, served live off the api.lawyer substrate. Typed AXP envelopes throughout: OK | EMPTY | BLOCKED.

GET/filingsList filings — keyless and typed, branching on its query. ?agency= or ?status= narrow and answer 200 EMPTY when nothing matches; ?scope=admin|internal answer 403 BLOCKED.
response
{
  "type": "OK",
  "results": [
    {
      "id": "m_1",
      "filing": "patent.provisional",
      "status": "intake",
      "title": "[demo] Sample provisional patent application",
      "meter": { "predicate": "uspto.receipt", "released": false, "amountUsd": 199 }
    }
  ]
}
GET/filings/:idOne filing: its stage on the substrate, the Asset’s registry serial once assigned, and the Meter state.
response
{
  "type": "OK",
  "filing": {
    "id": "m_1",
    "filing": "patent.provisional",
    "status": "intake",
    "assetId": "a_1",
    "serial": null,
    "meter": { "predicate": "uspto.receipt", "released": false, "amountUsd": 199 }
  }
}

File — open act

The one open filing act filings.legal sells today: the pro-se provisional patent filing. It mints a real patent-rail Matter on the substrate and returns a receipt-metered ACCEPTED — the Meter is unreleased until the USPTO receipt.

POST/file/provisionalFile a pro-se provisional patent. $199 flat, receipt-metered; government fees pass through at cost. Returns a typed ACCEPTED with a trackingId the status reads follow.
request
{
  "title": "Distributed ledger for credential attestation",
  "inventor": "Ada Inventor",
  "applicantState": "TX"
}
response
{
  "type": "ACCEPTED",
  "verb": "file",
  "filing": "patent.provisional",
  "trackingId": "m_2",
  "assetId": "a_2",
  "meter": { "predicate": "uspto.receipt", "released": false, "amountUsd": 199 },
  "passThrough": { "usptoFeeUsd": 65, "markedUp": false },
  "eta": "PT6H",
  "next": { "status": "/filings/m_2" }
}

File — reserved act

Reserved filings are DESCRIBED, never sold. Each returns a typed PENDING_SIGNER — the required credential, a sovereign refusal, and NO ship date — and routes the act to an independent Signer through gigs.lawyer. No substrate write happens; an agent is never routed to sign.

POST/file/utilityUtility patent filing — reserved. Returns PENDING_SIGNER (requiresSigner: uspto-registration).
response
{
  "type": "PENDING_SIGNER",
  "verb": "file",
  "filing": "patent.utility",
  "reserved": true,
  "gate": { "requiresSigner": "uspto-registration" },
  "signer": { "source": "https://gigs.lawyer" },
  "refusal": "An agent cannot sign a reserved filing… signed by an independent licensed professional under their own credential.",
  "shipDate": null,
  "note": "Described, not sold — awaiting ratification (the Rule 5.4 survey)."
}
POST/file/patent-oaPatent office-action response — reserved. Returns PENDING_SIGNER (requiresSigner: uspto-registration).
response
{ "type": "PENDING_SIGNER", "filing": "patent.office_action", "gate": { "requiresSigner": "uspto-registration" }, "shipDate": null }
POST/file/trademark-oaTrademark office-action response — reserved. Returns PENDING_SIGNER (requiresSigner: state-bar).
response
{ "type": "PENDING_SIGNER", "filing": "trademark.office_action", "gate": { "requiresSigner": "state-bar" }, "shipDate": null }

How the surface refuses

Refusals are typed and worded: 400 for a malformed filing body, 403 BLOCKED for a platform-reserved scope, 404 for a filing that does not exist, and 502 when the api.lawyer substrate refuses the call (the filing was not minted; nothing is charged). A reserved filing is not a refusal — it is a typed PENDING_SIGNER, 202.