COBRA Notice Content QA API Reference
Beta. Checks one draft COBRA election notice against 29 CFR 2590.606-4(b)(4), or general notice against 2590.606-1(c), plus the deadlines and the dates and payment terms it states. Product page and free test form.
Endpoint
| Paid | POST https://www.spreadrun.com/api/v1/cobra-notice-qa, API key required, $25.00 per completed QA run |
|---|---|
| Demo | POST https://www.spreadrun.com/api/demo/cobra-notice-qa, no key, 10 runs per day. Runs the three published sample requests only (election notice, with errors, general notice); spacing and key order do not matter, any changed value does. Your own notice goes to the paid endpoint. |
| Body | A JSON object, UTF-8, up to 4.4 MB. |
Request
noticeType | Required. election or general. |
noticeText | The notice as plain text, up to 200,000 characters. Send this or noticeFile. |
noticeFile | Object: type (pdf or docx) and base64, up to 3 MB before encoding. A PDF needs a text layer; scanned images are rejected. |
noticeDate | YYYY-MM-DD the notice goes out. Default: asOf. |
asOf | Optional. YYYY-MM-DD used when noticeDate is missing. Default: today (UTC). |
qualifyingEvent.type | Election notices, required: termination, reduction-of-hours, death, medicare-entitlement, bankruptcy, divorce, legal-separation or dependent-child. |
qualifyingEvent.date | Election notices: YYYY-MM-DD of the qualifying event. Needed for the deadline math. |
qualifyingEvent.lossOfCoverageDate | YYYY-MM-DD plan coverage ends. Used for the 60-day election period and to compare with the end date stated in the notice. |
qualifyingEvent.employerIsAdministrator | true (default) for the 44-day rule; false when a separate administrator sends the notice. |
qualifyingEvent.periodStartsAtLossOfCoverage | true when the plan starts the notice period at the loss of coverage instead of the event. |
qualifyingEvent.administratorNotifiedDate | YYYY-MM-DD the administrator was notified. Needed for a separate administrator and for divorce, legal separation or loss of dependent status. |
coverageStartDate | General notices: YYYY-MM-DD plan coverage began, for the 90-day deadline. |
Start from the sample election notice request or the general notice request. The plan and administrator are invented, and beneficiaries are named by status. Finished notices with names are accepted; they are processed in memory and not stored.
Content items
Election notice, 29 CFR 2590.606-4(b)(4)
- (i) The plan's name, and the name, address and telephone number of whoever administers COBRA coverage.
- (ii) The qualifying event.
- (iii) The qualified beneficiaries who may elect, by status or name, and the date plan coverage ends or ended.
- (iv) That each qualified beneficiary has an independent right to elect, that the employee or spouse may elect for the others, and that a parent or legal guardian may elect for a minor child.
- (v) How to elect, the election period, and the date by which the election must be made.
- (vi) What happens if you do not elect or you waive, including the effect on other coverage rights, and how to revoke a waiver before the deadline.
- (vii) The coverage offered and the date it begins, described or by reference to the summary plan description.
- (viii) The maximum coverage period, when coverage ends, and what can end it early.
- (ix) When the maximum period can be extended for a disability or a second qualifying event, and by how long.
- (x) For coverage of less than 36 months: your duty to report a second qualifying event or a Social Security disability determination, how and by when, what happens if you do not, and your duty to report that a beneficiary is no longer disabled.
- (xi) The amount each qualified beneficiary must pay.
- (xii) Payment due dates, the right to pay monthly, grace periods, where to send payments, and what happens if a payment is late or missed.
- (xiii) Why the administrator needs current addresses for everyone who is or may become a qualified beneficiary.
- (xiv) A statement that the notice does not fully describe continuation coverage, and that more is in the summary plan description or available from the plan administrator.
Item (x) applies only when the coverage offered lasts less than 36 months, so it is checked for termination and reduction of hours.
General notice, 29 CFR 2590.606-1(c)
- (1) The plan's name, and the name, address and telephone number of who to contact.
- (2) A general description of COBRA coverage: who can become a qualified beneficiary, the qualifying events, the employer's duty to notify the administrator, the maximum period, extensions, and premium payment.
- (3) Your duty to report a divorce, a legal separation or a child losing dependent status, and how to do it.
- (4) Your duty to report a Social Security disability determination, and how to do it.
- (5) Why the administrator needs current addresses.
- (6) A statement that the notice does not fully describe continuation coverage, and where to find more.
How it checks
- Each item is a set of fixed patterns over the notice text. A missing pattern that the item needs is an error; a missing detail that is easy to word differently is a warning. Patterns can miss unusual wording and can be satisfied by wording that is not adequate, so read each finding against your notice.
- Dates in the notice are read in the forms October 9, 2026, 10/09/2026 and 2026-10-09. The election deadline is a date in a sentence about electing by, before or no later than a date.
- Deadlines: 44 days from the event (or the loss of coverage, if the plan says so) when the employer is the administrator; 14 days from the administrator being notified otherwise, with the employer's 30 days checked too; 90 days from the start of coverage for a general notice.
- The election period must end no earlier than 60 days after the later of the loss of coverage (or the event, if not given) and the notice date.
Report
| Field | Meaning |
|---|---|
status | FAIL if any error, WARN if only warnings, otherwise PASS. A PASS is not legal advice and not a guarantee against penalties. |
checklist | One entry per content item: item, label, status found, review or missing. |
contentItems | Required, found and missing counts. |
deadlines | Computed dates: electionNoticeDue or generalNoticeDue, electionPeriodEndsNoEarlierThan, employerToAdministratorBy where it applies, and the rule used. |
readiness | The send-readiness checklist: content, deadline, consistency, medicare and privacy, each ready, review, fix or not-checked. |
findings | Errors first. Each has severity, ruleId, item, path, message and source. Findings never repeat text, amounts, names or dates from the notice. |
regulation, notChecked, sources, scope, input, inputSha256 | The content list used, what the report does not cover, where the rules come from, what the verdict means, and a fingerprint of the request body. |
Rule IDs
| Rule | Severity | Meaning |
|---|---|---|
COBRA-E01-PLAN | warning | (i) No plan name ending in "Plan". |
COBRA-E01-ADMIN | error | (i) No administrator named. |
COBRA-E01-PHONE | error | (i) No telephone number. |
COBRA-E01-ADDRESS | error | (i) No mailing address. |
COBRA-E02-EVENT | error | (ii) The qualifying event is not identified. |
COBRA-E02-TYPE | warning | (ii) The notice does not name the event type you gave. |
COBRA-E03-BENEFICIARIES | error | (iii) Qualified beneficiaries not identified. |
COBRA-E03-END-DATE | error | (iii) No date on which coverage ends. |
COBRA-E04-INDEPENDENT | error | (iv) No independent right to elect. |
COBRA-E04-ON-BEHALF | warning | (iv) Electing on behalf of others not mentioned. |
COBRA-E04-GUARDIAN | warning | (iv) Parent or legal guardian not mentioned. |
COBRA-E05-PROCEDURE | error | (v) How to elect is not explained. |
COBRA-E05-PERIOD | error | (v) No election period. |
COBRA-E05-DATE | error | (v) No specific date by which to elect. |
COBRA-E06-CONSEQUENCES | error | (vi) Consequences of not electing or waiving not explained. |
COBRA-E06-REVOKE | error | (vi) Revoking a waiver not described. |
COBRA-E06-OTHER-RIGHTS | warning | (vi) Effect on other coverage rights, such as special enrollment, not mentioned. |
COBRA-E07-COVERAGE | error | (vii) Coverage offered not described, and no reference to the SPD. |
COBRA-E07-START | warning | (vii) When coverage begins not stated. |
COBRA-E08-MAXIMUM | error | (viii) Maximum period not stated in months. |
COBRA-E08-EARLY-END | error | (viii) Early termination not explained. |
COBRA-E09-DISABILITY | error | (ix) Disability extension not described. |
COBRA-E09-SECOND-EVENT | error | (ix) Second qualifying event extension not described. |
COBRA-E10-SSA | error | (x) 18-month notices: no Social Security disability notice duty. |
COBRA-E10-TIMING | error | (x) No time limit for those notices. |
COBRA-E10-NO-LONGER | error | (x) No duty to report a beneficiary is no longer disabled. |
COBRA-E11-AMOUNT | error | (xi) No premium amount in dollars. |
COBRA-E12-DUE | error | (xii) No payment due dates. |
COBRA-E12-MONTHLY | error | (xii) Right to pay monthly not stated. |
COBRA-E12-GRACE | error | (xii) No grace period. |
COBRA-E12-ADDRESS | error | (xii) No address to send payments to. |
COBRA-E12-LATE | error | (xii) Consequences of late payment or non-payment not explained. |
COBRA-E13-ADDRESSES | error | (xiii) Keeping addresses current not explained. |
COBRA-E14-STATEMENT | error | (xiv) No "does not fully describe" statement. |
COBRA-G01-PLAN | warning | General (1): no plan name. |
COBRA-G01-PHONE | error | General (1): no telephone number. |
COBRA-G01-ADDRESS | error | General (1): no address. |
COBRA-G02-WHO | error | General (2): who may become a qualified beneficiary. |
COBRA-G02-EVENTS | error | General (2): the qualifying events. |
COBRA-G02-EMPLOYER | error | General (2): the employer's duty to notify the administrator. |
COBRA-G02-MAXIMUM | error | General (2): the maximum period. |
COBRA-G02-EXTENSION | error | General (2): extensions. |
COBRA-G02-PREMIUM | error | General (2): paying for coverage. |
COBRA-G03-EVENTS | error | General (3): divorce, legal separation and dependent status as events to report. |
COBRA-G03-PROCEDURE | error | General (3): how and by when to report them. |
COBRA-G04-SSA | error | General (4): reporting a disability determination. |
COBRA-G05-ADDRESSES | error | General (5): keeping addresses current. |
COBRA-G06-STATEMENT | error | General (6): "does not fully describe" statement. |
COBRA-DEADLINE-LATE | error | The notice goes out after its deadline. |
COBRA-EMPLOYER-LATE | error | The employer notified a separate administrator more than 30 days after the event. |
COBRA-DEADLINE-UNKNOWN | warning | A date needed for the deadline is missing. |
COBRA-DATE-MISSING | error | No qualifying event date. |
COBRA-DATE-FORMAT | error | A date is not YYYY-MM-DD. |
COBRA-DATE-ORDER | warning | Loss of coverage before the event. |
COBRA-CONSIST-ELECTION-DATE | error | The stated election deadline is less than 60 days after the later of the loss of coverage and the notice. |
COBRA-CONSIST-COVERAGE-END | warning | The stated coverage end date differs from lossOfCoverageDate. |
COBRA-CONSIST-FIRST-PAYMENT | error | The first payment is due sooner than 45 days after the election. |
COBRA-CONSIST-GRACE | error | A grace period shorter than 30 days. |
COBRA-CONSIST-DURATION | error | The months stated do not include 18 (termination, reduced hours) or 36 (other events). |
COBRA-CONSIST-PREMIUM-PCT | error | A premium above 102 percent (other than 150 percent). |
COBRA-MEDICARE | warning | Election notices: Medicare not mentioned. |
COBRA-PII-SSN | warning | Something that looks like a Social Security number. |
Source keys, as returned in every report:
cfr2590.606-1 | 29 CFR 2590.606-1, general notice of continuation coverage (deadline and content) |
cfr2590.606-2 | 29 CFR 2590.606-2, employer notice of a qualifying event to the administrator (30 days) |
cfr2590.606-3 | 29 CFR 2590.606-3, notices from qualified beneficiaries |
cfr2590.606-4 | 29 CFR 2590.606-4, election notice (14 days, or 44 days when the employer is the administrator; content items (b)(4)(i) to (xiv)) |
usc1162 | 29 USC 1162, period of coverage and premium limits |
usc1165 | 29 USC 1165, election period |
cfr54.4980B-6 | 26 CFR 54.4980B-6, election period of at least 60 days |
cfr54.4980B-7 | 26 CFR 54.4980B-7, maximum coverage periods (18, 29 and 36 months) |
cfr54.4980B-8 | 26 CFR 54.4980B-8, premiums: 102 percent, 45 days for the first payment, 30-day grace period |
dol-model-2020 | DOL model general and election notices, updated 2020 to explain how COBRA and Medicare interact |
- 29 CFR 2590.606-4: election notice (deadlines and the fourteen content items)
- 29 CFR 2590.606-1: general notice (deadline and the six content items)
- 29 CFR 2590.606-2: employer notice to the administrator
- 29 CFR 2590.606-3: notices from qualified beneficiaries
- 26 CFR 54.4980B-6: the election period
- 26 CFR 54.4980B-7: maximum coverage periods
- 26 CFR 54.4980B-8: premiums and payment timing
- 26 CFR 54.4980B-2: which employers are covered
- 29 USC 1132(c)(1): penalties for failing to give notice
- 29 CFR 2575.502c-1: the $110 daily maximum
- DOL: An Employer's Guide to Group Health Continuation Coverage Under COBRA
- DOL: COBRA model notices FAQ (May 2020)
- Morehouse v. Steak n Shake (6th Cir. 2019): medical bills awarded under the "other relief" language, reversed on other grounds
- Howard v. Ivy Creek of Tallapoosa (M.D. Ala. 2022): delegating the notice does not shift liability
Not checked
- Whether the wording is legally sufficient in context. A pattern can find that an item is addressed, not that it is right.
- Whether the premium amounts, plan details and beneficiaries named are correct for your plan.
- Whether the notice was actually delivered, and how (first-class mail, separate notices to a spouse at another address).
- State continuation (mini-COBRA) laws, and plans of employers with fewer than 20 employees, which federal COBRA does not cover.
- The notice of unavailability, the notice of early termination and the employer notice to the administrator.
Example responses
A paid check of the sample election notice (report shortened), and the findings from a demo run of the sample with errors. Both generated by running the real endpoint code.
{
"requestId": "7f3c2a1e-5b8d-4c6f-9e0a-1d2b3c4d5e6f",
"api": "cobra-notice-qa",
"mode": "paid",
"charged": true,
"priceCents": 2500,
"balanceCents": 7500,
"report": {
"schemaVersion": 1,
"status": "PASS",
"noticeType": "election",
"qualifyingEventType": "termination",
"asOf": "2026-10-09",
"regulation": "29 CFR 2590.606-4(b)(4)",
"contentItems": {
"required": 14,
"found": 14,
"missing": 0
},
"checklist": [
{
"item": "i",
"label": "Plan name and the COBRA administrator's name, address and telephone number",
"status": "found"
},
{
"item": "ii",
"label": "Identification of the qualifying event",
"status": "found"
},
{
"item": "iii",
"label": "Qualified beneficiaries, by status or name, and the date coverage ends",
"status": "found"
},
{
"item": "iv",
"label": "Each qualified beneficiary's independent right to elect",
"status": "found"
},
{
"item": "v",
"label": "How to elect, the election period, and the date by which to elect",
"status": "found"
},
{
"item": "vi",
"label": "What happens if you do not elect or you waive, and how to revoke a waiver",
"status": "found"
},
{
"item": "vii",
"label": "The coverage offered and when it begins",
"status": "found"
},
{
"item": "viii",
"label": "The maximum coverage period, the end date, and early termination",
"status": "found"
},
{
"item": "ix",
"label": "Extensions for disability or a second qualifying event",
"status": "found"
},
{
"item": "x",
"label": "Your duty to give notice of a second qualifying event or a disability determination",
"status": "found"
},
{
"item": "xi",
"label": "The amount each qualified beneficiary must pay",
"status": "found"
},
{
"item": "xii",
"label": "Payment due dates, monthly payment, grace periods, where to pay, and late payment",
"status": "found"
},
{
"item": "xiii",
"label": "Keeping the administrator informed of current addresses",
"status": "found"
},
{
"item": "xiv",
"label": "A statement that the notice does not fully describe coverage, and where to find more",
"status": "found"
}
],
"deadlines": {
"noticeDateUsed": "noticeDate",
"rule": "44 days after the qualifying event",
"electionNoticeDue": "2026-11-13",
"electionPeriodEndsNoEarlierThan": "2026-12-08"
},
"readiness": [
{
"item": "content",
"label": "All required content items present",
"status": "ready"
},
{
"item": "deadline",
"label": "Sent within the deadline",
"status": "ready"
},
{
"item": "consistency",
"label": "Stated dates and terms meet the minimums",
"status": "ready"
},
{
"item": "medicare",
"label": "Medicare explained",
"status": "ready"
},
{
"item": "privacy",
"label": "No personal identifiers in the draft",
"status": "ready"
}
],
"findingCount": 0,
"findingCounts": {
"error": 0,
"warning": 0
},
"ruleCounts": {},
"scope": "A content-completeness and deadline check of the draft you sent. A clean report is not legal advice, not a substitute for benefits counsel, and not a guarantee against DOL penalties or lawsuits.",
"input": {
"format": "text",
"bytes": 5749
},
"inputSha256": "9510af00e81b389c63b9265f01db2b0b1252f37ec7e27af8badb2fb2c21bfd98"
}
}[
{
"severity": "error",
"ruleId": "COBRA-CONSIST-DURATION",
"item": "viii",
"path": "/noticeText",
"message": "For termination or reduction of hours the maximum period is 18 months, and the notice does not state 18 months.",
"source": "cfr54.4980B-7"
},
{
"severity": "error",
"ruleId": "COBRA-CONSIST-ELECTION-DATE",
"item": "v",
"path": "/noticeText",
"message": "The election deadline stated in the notice is earlier than 60 days after the later of the loss of coverage and the notice date.",
"source": "cfr54.4980B-6"
},
{
"severity": "error",
"ruleId": "COBRA-CONSIST-FIRST-PAYMENT",
"item": "xii",
"path": "/noticeText",
"message": "The notice requires the first payment sooner than 45 days after the election.",
"source": "cfr54.4980B-8"
},
{
"severity": "error",
"ruleId": "COBRA-CONSIST-GRACE",
"item": "xii",
"path": "/noticeText",
"message": "The notice gives a grace period shorter than 30 days.",
"source": "cfr54.4980B-8"
},
{
"severity": "error",
"ruleId": "COBRA-CONSIST-PREMIUM-PCT",
"item": "xi",
"path": "/noticeText",
"message": "The notice states a premium above 102 percent of the plan cost (150 percent is allowed only during a disability extension).",
"source": "usc1162"
},
{
"severity": "error",
"ruleId": "COBRA-DEADLINE-LATE",
"item": null,
"path": "/noticeDate",
"message": "The notice goes out after the election notice deadline.",
"source": "cfr2590.606-4"
}
]Errors
See the shared error table. Rejected with HTTP 400 and not charged: a body that is not a JSON object, a noticeType other than election or general, both or neither of noticeText and noticeFile, a file that cannot be read, a scanned PDF with no text, an unknown qualifying event type, or wrong value types; on the demo endpoint, anything other than a sample request. Example (HTTP 400):
{
"error": {
"code": "input_error",
"message": "noticeType must be election or general.",
"requestId": "7f3c2a1e-5b8d-4c6f-9e0a-1d2b3c4d5e6f",
"charged": false
}
}Code samples
curl -X POST "https://www.spreadrun.com/api/v1/cobra-notice-qa" \
-H "Authorization: Bearer $SPREADRUN_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @notice_request.json