List Prosecution Rules
curl --request GET \
--url https://api.signa.so/v1/prosecution-rules \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/prosecution-rules"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/prosecution-rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/prosecution-rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/prosecution-rules"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/prosecution-rules")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/prosecution-rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"object": "prosecution_rule",
"rule_id": "uspto_domestic_oa_response@2022-12-03",
"jurisdiction_code": "US",
"office_code": "US",
"route": "direct_national",
"deadline_type": "oa_response",
"applies_when": "Section 1/44 refusal Office actions issued on or after 3 December 2022.",
"period": {
"value": 3,
"unit": "month",
"counting": "anniversary_day_short_month_fallback"
},
"roll_rule": {
"kind": "next_business_day",
"calendar": "uspto_dc",
"authority": "37 CFR 2.196; 35 USC 21(b)"
},
"extensions": [
{
"ordinal": 1,
"length": { "value": 3, "unit": "month" },
"fee": {
"amount": 125,
"currency": "USD",
"per": "request",
"authority": "37 CFR 2.6(a)(28)(ii); paper filing is $225 under (i)"
},
"request_deadline": "on_or_before_current_deadline",
"conditions": [
"Timely request and fee; no showing required.",
"One extension per Office action, not per class or application."
],
"discretionary": false
}
],
"not_earlier_than": null,
"absolute_cap": {
"value": 6,
"unit": "month",
"measured_from": "trigger_date",
"authority": "15 USC 1062(b)(3); 37 CFR 2.62(a)(2)"
},
"consequence": "abandonment",
"remedy": {
"kind": "petition_to_revive",
"window": { "value": 2, "unit": "month" },
"starts_from": "abandonment_notice_issue_date",
"fee": {
"amount": 250,
"currency": "USD",
"per": "request",
"authority": "37 CFR 2.6(a)(15)(iv)"
},
"authority": "37 CFR 2.66",
"notes": [
"If non-receipt is declared, the alternative window is 2 months from actual knowledge, subject to an outer cap of 6 months from the TSDR abandoned date."
]
},
"authority_level": "office_practice",
"effective_from": "2022-12-03",
"effective_until": null,
"applicability_basis": "office_action_issue_date",
"last_verified": "2026-08-31",
"sources": [
{
"citation": "37 CFR 2.62",
"url": "https://www.ecfr.gov/current/title-37/section-2.62",
"section": "37 CFR 2.62(a), (a)(1)-(2)",
"quoted_text": "(a) Deadline. Each Office action shall set forth the deadline for response. (1) Response periods. Unless the applicant is notified otherwise in an Office action, the response periods for an Office action are as follows: (i) Three months from the issue date, for an Office action in an application under section 1 and/or section 44 of the Act; …",
"snapshot_sha256": "7cf3d3eb3df61779b85328dd62ef86563d5fffcc31c57f432b9482473276eed7",
"authority_level": "regulation",
"last_checked": "2026-08-31"
}
]
}
],
"has_more": false,
"pagination": { "cursor": null }
}
Deadlines
List Prosecution Rules
List all prosecution deadline rules (office action responses, statements of use) across modeled offices
GET
/
v1
/
prosecution-rules
List Prosecution Rules
curl --request GET \
--url https://api.signa.so/v1/prosecution-rules \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/prosecution-rules"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/prosecution-rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/prosecution-rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/prosecution-rules"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/prosecution-rules")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/prosecution-rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"object": "prosecution_rule",
"rule_id": "uspto_domestic_oa_response@2022-12-03",
"jurisdiction_code": "US",
"office_code": "US",
"route": "direct_national",
"deadline_type": "oa_response",
"applies_when": "Section 1/44 refusal Office actions issued on or after 3 December 2022.",
"period": {
"value": 3,
"unit": "month",
"counting": "anniversary_day_short_month_fallback"
},
"roll_rule": {
"kind": "next_business_day",
"calendar": "uspto_dc",
"authority": "37 CFR 2.196; 35 USC 21(b)"
},
"extensions": [
{
"ordinal": 1,
"length": { "value": 3, "unit": "month" },
"fee": {
"amount": 125,
"currency": "USD",
"per": "request",
"authority": "37 CFR 2.6(a)(28)(ii); paper filing is $225 under (i)"
},
"request_deadline": "on_or_before_current_deadline",
"conditions": [
"Timely request and fee; no showing required.",
"One extension per Office action, not per class or application."
],
"discretionary": false
}
],
"not_earlier_than": null,
"absolute_cap": {
"value": 6,
"unit": "month",
"measured_from": "trigger_date",
"authority": "15 USC 1062(b)(3); 37 CFR 2.62(a)(2)"
},
"consequence": "abandonment",
"remedy": {
"kind": "petition_to_revive",
"window": { "value": 2, "unit": "month" },
"starts_from": "abandonment_notice_issue_date",
"fee": {
"amount": 250,
"currency": "USD",
"per": "request",
"authority": "37 CFR 2.6(a)(15)(iv)"
},
"authority": "37 CFR 2.66",
"notes": [
"If non-receipt is declared, the alternative window is 2 months from actual knowledge, subject to an outer cap of 6 months from the TSDR abandoned date."
]
},
"authority_level": "office_practice",
"effective_from": "2022-12-03",
"effective_until": null,
"applicability_basis": "office_action_issue_date",
"last_verified": "2026-08-31",
"sources": [
{
"citation": "37 CFR 2.62",
"url": "https://www.ecfr.gov/current/title-37/section-2.62",
"section": "37 CFR 2.62(a), (a)(1)-(2)",
"quoted_text": "(a) Deadline. Each Office action shall set forth the deadline for response. (1) Response periods. Unless the applicant is notified otherwise in an Office action, the response periods for an Office action are as follows: (i) Three months from the issue date, for an Office action in an application under section 1 and/or section 44 of the Act; …",
"snapshot_sha256": "7cf3d3eb3df61779b85328dd62ef86563d5fffcc31c57f432b9482473276eed7",
"authority_level": "regulation",
"last_checked": "2026-08-31"
}
]
}
],
"has_more": false,
"pagination": { "cursor": null }
}
Credits: 10 per request.
The example abbreviates for length: this rule carries six
Overview
Returns a flat list of prosecution deadline rules: the response periods an applicant faces during examination, namely office action responses, suspension inquiry responses, post-registration office action responses and statements of use. Each rule is self-contained: the response period and how it is counted, the weekend and holiday roll, the extension ladder with fees, the “whichever is later” floor and statutory cap where one exists, the consequence of missing the deadline, and the remedy available after it attaches. This is the third rule catalog, next to List Deadline Rules (maintenance and renewal) and List Opposition Rules. It exposes the same rule corpus that computes prosecution deadlines on Compute Deadlines. Every computed prosecution deadline cites arule.rule_id, and that id matches exactly one rule in this catalog, with the same source blocks: pinpoint section, verbatim quoted_text, and a snapshot_sha256 of the fetched document. Any date Signa computes can be checked against the rule behind it without fetching the law again.
The catalog holds 11 rules today: 8 USPTO rules (domestic and Madrid office action and suspension inquiry responses, the statement of use, and post-registration office actions) and 3 EUIPO rules (direct-filing objections and Madrid designation refusals).
Where an office changed its regime, each era is its own rule. The USPTO moved from a 6-month to a 3-month response period for office actions issued on or after 3 December 2022, so the domestic office action response is two rules, uspto_domestic_oa_response@legacy and uspto_domestic_oa_response@2022-12-03, each with its own effective_from and effective_until. applicability_basis names the case date that selects the era.
Rules are not versioned one by one, and there is no rule-change webhook. To detect a change, keep the response’s ETag and send it back in If-None-Match: 304 means no rule in your filtered set changed. Rule changes are announced in the changelog.
Query Parameters
string
Filter by jurisdiction code (ISO 3166-1 alpha-2 or
EU), case-insensitive. Office spellings are read as the jurisdiction they cover: EM as EU, UK as GB. A country with no modeled rules (e.g. JP) returns an empty list; a value that is not a country or jurisdiction code is a 400. Comma-separated for multiple values.string
Filter by uppercase ST.3 office code, e.g.
US or EM. Legacy lowercase codes (uspto, euipo) and EU are accepted as aliases. An unknown office code is a 400. Comma-separated for multiple values.string
Filter by filing route, in the vocabulary of
filing_route on Compute Deadlines items. Accepted values: national, regional, madrid. national and regional return direct_national rules; madrid returns madrid_designation rules. As on List Deadline Rules, four trademark filing_route values are also accepted: direct_national reads as national, direct_regional as regional, and madrid_ir and madrid_designation as madrid. Other values (e.g. transformation) return 400 with the accepted list. Rules with route: "any" apply to every route and are returned for any value. Comma-separated for multiple values.string
Filter by deadline type, in the
support[].type vocabulary of Compute Deadlines. Accepted values: oa_response, suspension_inquiry_response, post_registration_oa_response, sou. Comma-separated for multiple values.Response
A standard list response withdata: ProsecutionRule[]. The corpus is small and returned in a single page, in a fixed order. This endpoint is publicly cacheable, so the response never includes request_id.
string
Always
listobject[]
Show ProsecutionRule
Show ProsecutionRule
string
Always
prosecution_rulestring
Stable, permanent id for this rule, the same id a computed prosecution deadline carries as
rule.rule_id. Era-versioned rules carry an @<date> or @legacy suffix, e.g. uspto_domestic_oa_response@2022-12-03; rules with a single era have none, e.g. uspto_domestic_sou. Once published an id is never renamed or repointed, so it is safe to persist and to join against rule.rule_id on computed prosecution deadlines. Treat it as opaque: compare it for equality and do not parse it.string
Jurisdiction (uppercase ISO-2, or
EU)string
Uppercase ST.3 office code (
US, EM)string
direct_national, madrid_designation, or any when the rule applies regardless of route (USPTO post-registration office actions)string
oa_response, suspension_inquiry_response, post_registration_oa_response, or soustring
Plain-language statement of when this rule applies
object
The response period measured from the trigger date:
value, unit (month or day) and counting, how the period is counted. anniversary_day_short_month_fallback is US practice (TMEP 310). Values containing day_after (day_after_anniversary_day_short_month_fallback, day_after_end_of_month_carry, calendar_days_from_day_after) start the clock the day after the triggering event, as in the EU (Art 67 EUTMDR 2018/625).object | null
Weekend and holiday adjustment applied to the computed due date (
kind, calendar, authority), or null where the office applies no rollobject[]
The extension ladder, one entry per step:
ordinal, length, fee (amount, currency, what it is charged per, and its authority), request_deadline, plain-language conditions, and discretionary (false means granted on a timely, fee-paid request). Empty when the deadline cannot be extended.object | null
”Whichever is later” floor: the computed date is raised to the end of the named statutory maintenance window (
section_8, section_71, section_9, or any_pending) when that falls later. null for rules without one.object | null
Statutory ceiling on the extended deadline, measured from the trigger date (e.g. the USPTO 6-month outer limit under 15 USC 1062(b)(3))
string
What happens when the deadline and every extension are missed:
abandonment, partial_abandonment, refusal, deemed_withdrawn, loss_of_right, or noneobject
The relief available after the consequence attaches:
kind (petition_to_revive, continuation_of_proceedings, restitutio_in_integrum, reinstatement, appeal, or none), its window and starts_from anchor, fee, authority, and notes (e.g. the extension fee a USPTO petition to revive must also carry under 37 CFR 2.66(b)(4))string
The governing authority level for the rule value as a whole:
statute, regulation, office_practice, or office_notice. office_practice marks values that exist only in practice material: US month arithmetic is in TMEP 310, and the CFR and USC are silent on how months are counted.string
When this rule era began, as
YYYY-MM-DDstring | null
The inclusive last day the era was in force, or
null while still in force. A case date equal to this value selects this era; the next era starts the following day.string
Which case date is compared against the era boundaries. Not the same as
effective_from: the US office action periods key off office_action_issue_date, the US statement of use off notice_of_allowance_issue_date, and EUIPO direct-filing objections off time_limit_set_date.string
Date Signa last checked this rule against its sources, as
YYYY-MM-DDobject[]
Citable sources behind the rule value, in the same shape computed prosecution deadlines cite:
citation, url, pinpoint section, verbatim quoted_text (elisions marked with …), snapshot_sha256 of the fetched document (or null), per-source authority_level, and last_checked.boolean
Always
false. The corpus is returned in one page.object
Standard pagination envelope (
cursor: null){
"object": "list",
"data": [
{
"object": "prosecution_rule",
"rule_id": "uspto_domestic_oa_response@2022-12-03",
"jurisdiction_code": "US",
"office_code": "US",
"route": "direct_national",
"deadline_type": "oa_response",
"applies_when": "Section 1/44 refusal Office actions issued on or after 3 December 2022.",
"period": {
"value": 3,
"unit": "month",
"counting": "anniversary_day_short_month_fallback"
},
"roll_rule": {
"kind": "next_business_day",
"calendar": "uspto_dc",
"authority": "37 CFR 2.196; 35 USC 21(b)"
},
"extensions": [
{
"ordinal": 1,
"length": { "value": 3, "unit": "month" },
"fee": {
"amount": 125,
"currency": "USD",
"per": "request",
"authority": "37 CFR 2.6(a)(28)(ii); paper filing is $225 under (i)"
},
"request_deadline": "on_or_before_current_deadline",
"conditions": [
"Timely request and fee; no showing required.",
"One extension per Office action, not per class or application."
],
"discretionary": false
}
],
"not_earlier_than": null,
"absolute_cap": {
"value": 6,
"unit": "month",
"measured_from": "trigger_date",
"authority": "15 USC 1062(b)(3); 37 CFR 2.62(a)(2)"
},
"consequence": "abandonment",
"remedy": {
"kind": "petition_to_revive",
"window": { "value": 2, "unit": "month" },
"starts_from": "abandonment_notice_issue_date",
"fee": {
"amount": 250,
"currency": "USD",
"per": "request",
"authority": "37 CFR 2.6(a)(15)(iv)"
},
"authority": "37 CFR 2.66",
"notes": [
"If non-receipt is declared, the alternative window is 2 months from actual knowledge, subject to an outer cap of 6 months from the TSDR abandoned date."
]
},
"authority_level": "office_practice",
"effective_from": "2022-12-03",
"effective_until": null,
"applicability_basis": "office_action_issue_date",
"last_verified": "2026-08-31",
"sources": [
{
"citation": "37 CFR 2.62",
"url": "https://www.ecfr.gov/current/title-37/section-2.62",
"section": "37 CFR 2.62(a), (a)(1)-(2)",
"quoted_text": "(a) Deadline. Each Office action shall set forth the deadline for response. (1) Response periods. Unless the applicant is notified otherwise in an Office action, the response periods for an Office action are as follows: (i) Three months from the issue date, for an Office action in an application under section 1 and/or section 44 of the Act; …",
"snapshot_sha256": "7cf3d3eb3df61779b85328dd62ef86563d5fffcc31c57f432b9482473276eed7",
"authority_level": "regulation",
"last_checked": "2026-08-31"
}
]
}
],
"has_more": false,
"pagination": { "cursor": null }
}
sources and five remedy.notes, and quoted_text is cut at the trailing ….
Post-registration office actions
uspto_post_registration_oa_response (route: "any") is also listed on List Deadline Rules under the same rule_id, as a maintenance-catalog row. This catalog carries its prosecution shape: the 6-month period, the not_earlier_than floor at the end of the filing period the action examined, and reinstatement as the remedy.
Code Examples
curl "https://api.signa.so/v1/prosecution-rules?office=US&deadline_type=oa_response" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const rules = await signa.references.prosecutionRules({ office: "US", deadline_type: "oa_response" });
for (const rule of rules.data) {
console.log(rule.rule_id, rule.effective_from, rule.period.value, rule.period.unit);
}
Related Endpoints
- Compute Deadlines, compute prosecution deadlines from stored trademark IDs or supplied facts; every computed date cites a
rule_idfrom this catalog - List Deadline Rules, maintenance deadline rules (renewals, declarations)
- List Opposition Rules, opposition window rules