USPTO Office Action APIs

Family of 8 endpoints covering structured Office Action data — Text Retrieval, Citations, Rejections, and Enriched Citations. The Enriched Citation API uses machine-learning information extraction and entity resolution to normalize patent and non-patent literature citations against the application reference list. Office Action Weekly Archives are surfaced as bulk product OACT via SearchBulkProducts/GetBulkProduct. All legacy Office Action and Enriched Citation APIs were migrated to ODP ahead of the May 29, 2026 Developer Hub decommission.

USPTO Office Action APIs is one of 6 APIs that USPTO publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Patents, Office Actions, Citations, Rejections, and Government. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

uspto-office-actions-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: USPTO Office Action APIs
  version: '3.0'
  description: |
    USPTO Office Action API family on the Open Data Portal — 8 endpoints covering Text Retrieval,
    Citations, Rejections, and Enriched Citations. The Enriched Citation API uses machine-learning
    information extraction and entity resolution to normalize patent and non-patent literature
    citations against the application reference list.
  contact: {name: USPTO API Help, email: [email protected]}
servers:
- url: https://api.uspto.gov
  description: USPTO Open Data Portal
security:
- ApiKeyAuth: []
tags:
- name: Office Actions
- name: Citations
- name: Rejections
- name: Enriched Citations
paths:
  /api/v1/oa/text/search:
    get:
      tags: [Office Actions]
      summary: Search Office Action Text
      operationId: searchOfficeActionText
      parameters:
      - {name: q, in: query, schema: {type: string}}
      - {name: applicationNumberText, in: query, schema: {type: string}}
      - {name: mailDateFrom, in: query, schema: {type: string, format: date}}
      - {name: mailDateTo, in: query, schema: {type: string, format: date}}
      - {name: offset, in: query, schema: {type: integer}}
      - {name: limit, in: query, schema: {type: integer}}
      responses:
        '200': {description: Search results, content: {application/json: {schema: {$ref: '#/components/schemas/OfficeActionTextSearchResponse'}}}}
  /api/v1/oa/text/{officeActionIdentifier}:
    get:
      tags: [Office Actions]
      summary: Get Office Action Text
      operationId: getOfficeActionText
      parameters:
      - {name: officeActionIdentifier, in: path, required: true, schema: {type: string}}
      responses:
        '200': {description: Office action text, content: {application/json: {schema: {$ref: '#/components/schemas/OfficeActionText'}}}}
  /api/v1/oa/citations/search:
    get:
      tags: [Citations]
      summary: Search Office Action Citations
      operationId: searchOfficeActionCitations
      parameters:
      - {name: applicationNumberText, in: query, schema: {type: string}}
      - {name: citedPatentNumber, in: query, schema: {type: string}}
      - {name: offset, in: query, schema: {type: integer}}
      - {name: limit, in: query, schema: {type: integer}}
      responses:
        '200': {description: Citation results, content: {application/json: {schema: {type: object}}}}
  /api/v1/oa/citations/fields:
    get:
      tags: [Citations]
      summary: Get Office Action Citation Fields
      operationId: getOfficeActionCitationFields
      responses:
        '200': {description: Field metadata, content: {application/json: {schema: {type: object}}}}
  /api/v1/oa/rejections/search:
    get:
      tags: [Rejections]
      summary: Search Office Action Rejections
      operationId: searchOfficeActionRejections
      parameters:
      - {name: applicationNumberText, in: query, schema: {type: string}}
      - {name: rejectionBasisCategory, in: query, schema: {type: string, enum: ['101', '102', '103', '112']}}
      - {name: offset, in: query, schema: {type: integer}}
      - {name: limit, in: query, schema: {type: integer}}
      responses:
        '200': {description: Rejection results, content: {application/json: {schema: {type: object}}}}
  /api/v1/oa/rejections/fields:
    get:
      tags: [Rejections]
      summary: Get Office Action Rejection Fields
      operationId: getOfficeActionRejectionFields
      responses:
        '200': {description: Field metadata, content: {application/json: {schema: {type: object}}}}
  /api/v1/oa/enriched-citations/search:
    get:
      tags: [Enriched Citations]
      summary: Search Enriched Citations
      operationId: searchEnrichedCitations
      parameters:
      - {name: applicationNumberText, in: query, schema: {type: string}}
      - {name: citedPatentNumber, in: query, schema: {type: string}}
      - {name: offset, in: query, schema: {type: integer}}
      - {name: limit, in: query, schema: {type: integer}}
      responses:
        '200': {description: Enriched citation results, content: {application/json: {schema: {type: object}}}}
  /api/v1/oa/enriched-citations/fields:
    get:
      tags: [Enriched Citations]
      summary: Get Enriched Citation Fields
      operationId: getEnrichedCitationFields
      responses:
        '200': {description: Field metadata, content: {application/json: {schema: {type: object}}}}
components:
  securitySchemes:
    ApiKeyAuth: {type: apiKey, in: header, name: X-API-KEY}
  schemas:
    OfficeActionText:
      type: object
      properties:
        officeActionIdentifier: {type: string}
        applicationNumberText: {type: string}
        mailDate: {type: string, format: date}
        officeActionText: {type: string}
        rejections:
          type: array
          items:
            type: object
            properties:
              rejectionBasisCategory: {type: string}
              claimNumbers: {type: array, items: {type: string}}
              citedReferences: {type: array, items: {type: string}}
    OfficeActionTextSearchResponse:
      type: object
      properties:
        count: {type: integer}
        results:
          type: array
          items: {$ref: '#/components/schemas/OfficeActionText'}