Skip to content

Get a patent event

GET /api/v2/external/patents/{patentId}/events/{eventId}

Authentication: x-api-key header, with the patents:read scope. See Authentication and limits.

Returns a single event of a patent, identified by the patent UUID and the event UUID.

Path parameters

NameTypeRequiredDescription
eventIdstringYesThe opaque, stable Renewr UUID of the patent event.
patentIdstringYesThe opaque, stable Renewr UUID of the patent.

Response

200 The event matching the provided UUIDs.

json
{
  "object": "patentEvent",
  "id": "9f0d1e7a-3b2c-4d5e-8f6a-7b8c9d0e1f2a",
  "patent": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "providerId": "ACME-2021-0042"
  },
  "eventType": "RENEWAL",
  "dueDate": "2026-10-31",
  "gracePeriodEndDate": "2027-04-30",
  "renewal": {
    "annuityYear": 5
  },
  "appliedDecision": null,
  "duePeriod": "CURRENT",
  "processingStatus": "NOT_INSTRUCTED",
  "processingStatusUpdatedAt": null,
  "isFxRateFrozen": false,
  "feesStatus": "ESTIMATED",
  "createdAt": "2026-01-10T08:30:00.000Z",
  "updatedAt": "2026-07-15T14:00:00.000Z",
  "fees": {
    "object": "fees",
    "invoiceId": null,
    "eventId": "9f0d1e7a-3b2c-4d5e-8f6a-7b8c9d0e1f2a",
    "patent": {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "providerId": "ACME-2021-0042"
    },
    "currency": "EUR",
    "total": "1250.00",
    "components": [
      {
        "type": "OFFICE",
        "amount": "800.00"
      }
    ],
    "feesStatus": "ESTIMATED",
    "isFxRateFrozen": false
  },
  "instructability": {
    "isAllowed": true,
    "allowedDecisions": [
      "PROCEED",
      "SKIP_THIS_TIME",
      "DROP"
    ],
    "blockedReason": null,
    "opensAt": "2026-08-01",
    "mode": "DIRECT"
  }
}
Response fields
FieldTypeDescription
objectstringString describing the object type (auto-description). One of: patentEvent.
idstringOpaque, stable Renewr UUID of the patent event. Format: uuid.
patentobjectThe patent this event belongs to: identified both ways (Renewr id + your own reference).
patent.idstringRenewr UUID of the patent. Format: uuid.
patent.providerIdstring or nullThe client's own matching reference for that patent.
eventTypestringBusiness kind of the event: RENEWAL today; new kinds will be added over time (ignore events whose kind you do not handle). One of: RENEWAL.
dueDatestringDue date of the event (renewal / annuity payment deadline).
gracePeriodEndDatestring or nullISO date string.
renewalobject or nullRenewal-specific identification: non-null exactly when eventType is RENEWAL (today: every event).
renewal.annuityYearintegerAnnuity year covered by the event.
renewal.paymentSequenceNumberinteger or nullOffice payment sequence number: present only when it differs from annuityYear.
appliedDecisionstring or nullPROCEED | SKIP_THIS_TIME | DROP: the instruction applied to this event. One of: PROCEED, SKIP_THIS_TIME, DROP.
duePeriodstring or nullPeriod of the due date relative to now. One of: LATE, GRACE_PERIOD, CURRENT, UPCOMING, LAPSED.
processingStatusstring or nullProcessing status of the event. One of: NOT_INSTRUCTED, INSTRUCTED, PAYMENT_SENT, PAYMENT_CONFIRMED, FULFILLED, UNPROCESSABLE.
processingStatusUpdatedAtstring or nullISO 8601 timestamp (UTC). Format: date-time.
isFxRateFrozenbooleanTrue when the FX rate used to compute fees is frozen.
feesStatusstring or nullESTIMATED (projected) or INVOICED (an invoice exists). One of: ESTIMATED, INVOICED.
createdAtstring or nullISO 8601 timestamp (UTC). Format: date-time.
updatedAtstring or nullISO 8601 timestamp (UTC). Format: date-time.
feesobjectEstimated fee breakdown for this event: present only when requested via include=fees.
fees.objectstringString describing the object type (auto-description). One of: fees.
fees.invoiceIdstring or nullBack-reference to the invoice these fees belong to. Format: uuid.
fees.eventIdstring or nullPublic UUID of the patent event these fees belong to (trace each fee line back to its event). Format: uuid.
fees.patentobjectThe patent this fee line belongs to: identified both ways (Renewr id + your own reference).
fees.patent.idstring or nullRenewr UUID of the patent. Format: uuid.
fees.patent.providerIdstring or nullThe client's own matching reference for that patent.
fees.currencystringISO 4217 currency code the client is invoiced in.
fees.totalstring or nullTotal of all components, in invoice currency (decimal string).
fees.componentsarray of objectsPer-type fee breakdown (Stripe fee_details style); a component that does not apply is absent (never null). Sums to total.
fees.components[].typestringOFFICE (national office) | AGENT (external agent) | RENEWR (service fee) | GRACE_PERIOD (late surcharge). One of: OFFICE, AGENT, RENEWR, GRACE_PERIOD.
fees.components[].amountstringAmount of this component, in invoice currency (decimal string).
fees.feesStatusstringWhether these amounts are ESTIMATED (projected) or INVOICED (final: an invoice exists). One of: ESTIMATED, INVOICED.
fees.isFxRateFrozenbooleanTrue when the FX rate used to compute these fees is frozen.
instructabilityobjectInstruction affordance: whether/how this event can be instructed right now.
instructability.isAllowedbooleanWhether an instruction can be POSTed on this event right now.
instructability.allowedDecisionsarray of stringValid decisions right now (empty when not allowed; a lapsed event drops PROCEED).
instructability.blockedReasonstring or nullWhy an instruction is not allowed: ALREADY_INSTRUCTED | TOO_EARLY | EARLIER_EVENT_PENDING (null when allowed). One of: ALREADY_INSTRUCTED, TOO_EARLY, EARLIER_EVENT_PENDING.
instructability.opensAtstring or nullISO date string.
instructability.modestringHow an instruction would be processed now: DIRECT executes immediately. One of: DIRECT.

Errors

Errors use the application/problem+json envelope with stable machine-readable codes. See the Errors guide.

StatusDescription
400Validation failed (validation_failed): carries per-field errors[] with RFC 6901 JSON Pointers.
401Missing or invalid API key (invalid_api_key), or expired key (api_key_expired).
403API key lacks the required scope (insufficient_scope, with requiredScope extension) or the operation is not enabled for this client (forbidden).
404The resource does not exist in your portfolio (not_found).
429Daily API call limit exceeded (rate_limit_exceeded): the Retry-After header gives the seconds until reset.

Example request

bash
curl "https://api.renewr.example/api/v2/external/patents/$PATENT_ID/events/$EVENT_ID" \
  -H "x-api-key: $RENEWR_API_KEY"

Renewr External API v2. Access on invitation.