CheckboxDocs

Findings API

The latest result of each legal check for a site, with citations, evidence references and remediation.

OperationEndpoint
List findingsGET /v1/findings
Retrieve a findingGET /v1/findings/{finding}
Triage a findingPOST /v1/findings/{finding}

The Finding object

The latest result of one legal check for a site.

FieldTypeDescription
idstringUnique identifier of the finding (fnd_…).
objectenumString representing the object's type. Always "finding".
livemodebooleantrue for live-mode objects, false for test mode (ck_test_ keys act on an isolated sandbox).
sitestringThe site.
check_idstringStable id of the legal check.
titlestringShort title.
detailstringWhat was observed.
stageenumLifecycle stage. One of signup, confirmation, reminder, cancellation, config.
severityenumStrictest severity among the applicable requirements. One of critical, high, medium, low.
statusenumLatest check result. One of pass, fail, needs_review, not_applicable.
stateenumTriage state. One of open, acknowledged, resolved, accepted_risk.
notestring | nullTriage note.
jurisdictionsarray of enumJurisdictions whose laws this check applies.
requirementsarray of RequirementRefsThe legal requirements behind the check, with citations.
remediationRemediation | nullHow to fix the finding (see also the fixes resource and compliance plans).
confidencenumberConfidence 0-1 of the check result.
evidence_refsarray of stringsIds of the captures / emails / evidence records supporting the result.
detailsobjectCheck-specific details (failing regions/devices/URLs, measurements, quotes).
scanstring | nullScan that produced the latest result.
first_seenintegerFirst time the check was evaluated. Unix timestamp in seconds.
last_seenintegerLatest evaluation. Unix timestamp in seconds.
resolved_atinteger | nullWhen it was resolved. Unix timestamp in seconds.

List findings

GET /v1/findings

Findings ordered by urgency (failing first, then by severity). Filter by site, status (fail, needs_review, pass, not_applicable) and state (open, acknowledged, resolved, accepted_risk). Fix the open fail findings to become compliant.

Scope findings:read · Operation listFindings

SDK: checkbox.findings.list() (Node) · checkbox.findings.list() (Python). MCP / agents: operation listFindings.

Parameters

ParameterInTypeDescription
limitqueryintegerNumber of objects to return, 1-100 (default 10).
starting_afterquerystringCursor: an object id; returns the objects after it (older).
ending_beforequerystringCursor: an object id; returns the objects before it (newer).
sitequerystringOnly objects of this site (site_…).
statusqueryenumOnly this check status. One of pass, fail, needs_review, not_applicable.
statequeryenumOnly this triage state. One of open, acknowledged, resolved, accepted_risk.

Returns

Returns a list ({ object: "list", data, has_more, url }) of Finding objects.

Errors use the standard envelope with a stable code and, where useful, next_action.

curl -G https://app.checkbox.site/v1/findings \
  -u "$CHECKBOX_SECRET_KEY:" \
  -d limit=3
Response
{
  "object": "list",
  "data": [
    {
      "id": "fnd_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
      "object": "finding",
      "livemode": false,
      "site": "site_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
      "check_id": "signup.disclosure_clear_conspicuous",
      "title": "Auto-renewal terms are not shown before purchase",
      "detail": "The checkout page in US-CA (mobile) shows no renewal terms near the subscribe button.",
      "stage": "signup",
      "severity": "high",
      "status": "fail",
      "state": "open",
      "note": null,
      "jurisdictions": [
        "US-CA"
      ],
      "requirements": [
        {
          "id": "US-CA.17602.a.1",
          "jurisdiction": "US-CA",
          "citation": "Cal. Bus. & Prof. Code § 17602(a)(1)",
          "title": "Clear and conspicuous auto-renewal terms before purchase",
          "source_url": "https://leginfo.legislature.ca.gov/…"
        }
      ],
      "remediation": {
        "summary": "Show the auto-renewal terms next to the subscribe button.",
        "steps": [
          "Add the disclosure above the button"
        ],
        "platform": "stripe",
        "suggested_copy": "Your subscription renews automatically every month at $9.99 until you cancel.",
        "snippet": {
          "language": "html",
          "code": "<p class=\"renewal-terms\">…</p>"
        }
      },
      "confidence": 0.9,
      "evidence_refs": [],
      "details": {
        "failingRegions": [
          "US-CA"
        ]
      },
      "scan": "scan_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
      "first_seen": 1793318400,
      "last_seen": 1793318400,
      "resolved_at": 1793318400
    }
  ],
  "has_more": false,
  "url": "/v1/sites"
}

Retrieve a finding

GET /v1/findings/{finding}

One finding with its legal requirements (citations), evidence references and remediation.

Scope findings:read · Operation retrieveFinding

SDK: checkbox.findings.retrieve() (Node) · checkbox.findings.retrieve() (Python). MCP / agents: operation retrieveFinding.

Parameters

ParameterInTypeDescription
finding requiredpathstringUnique identifier of the finding (fnd_…).

Returns

Returns a Finding object.

Errors use the standard envelope with a stable code and, where useful, next_action.

curl https://app.checkbox.site/v1/findings/fnd_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b \
  -u "$CHECKBOX_SECRET_KEY:"
Response
{
  "id": "fnd_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "object": "finding",
  "livemode": false,
  "site": "site_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "check_id": "signup.disclosure_clear_conspicuous",
  "title": "Auto-renewal terms are not shown before purchase",
  "detail": "The checkout page in US-CA (mobile) shows no renewal terms near the subscribe button.",
  "stage": "signup",
  "severity": "high",
  "status": "fail",
  "state": "open",
  "note": null,
  "jurisdictions": [
    "US-CA",
    "US-NY"
  ],
  "requirements": [
    {
      "id": "US-CA.17602.a.1",
      "jurisdiction": "US-CA",
      "citation": "Cal. Bus. & Prof. Code § 17602(a)(1)",
      "title": "Clear and conspicuous auto-renewal terms before purchase",
      "source_url": "https://leginfo.legislature.ca.gov/…"
    }
  ],
  "remediation": {
    "summary": "Show the auto-renewal terms next to the subscribe button.",
    "steps": [
      "Add the disclosure above the button"
    ],
    "platform": "stripe",
    "suggested_copy": "Your subscription renews automatically every month at $9.99 until you cancel.",
    "snippet": {
      "language": "html",
      "code": "<p class=\"renewal-terms\">…</p>"
    }
  },
  "confidence": 0.9,
  "evidence_refs": [],
  "details": {
    "failingRegions": [
      "US-CA"
    ]
  },
  "scan": "scan_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "first_seen": 1793318400,
  "last_seen": 1793318400,
  "resolved_at": 1793318400
}

Triage a finding

POST /v1/findings/{finding}

Sets the triage state (open, acknowledged, accepted_risk, resolved) and an optional note. Triage does not change the check result; fixing the issue and re-scanning does.

Scope findings:write · Idempotent (send Idempotency-Key) · Operation updateFinding

SDK: checkbox.findings.update() (Node) · checkbox.findings.update() (Python). MCP / agents: operation updateFinding.

Parameters

ParameterInTypeDescription
finding requiredpathstringUnique identifier of the finding (fnd_…).

Body

FieldTypeDescription
state requiredenumNew triage state. One of open, acknowledged, resolved, accepted_risk.
notestringWhy (kept with the finding).

Returns

Returns a Finding object.

Errors use the standard envelope with a stable code and, where useful, next_action.

curl https://app.checkbox.site/v1/findings/fnd_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b \
  -u "$CHECKBOX_SECRET_KEY:" \
  -H "Content-Type: application/json" \
  -d '{
  "state": "acknowledged"
}'
Response
{
  "id": "fnd_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "object": "finding",
  "livemode": false,
  "site": "site_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "check_id": "signup.disclosure_clear_conspicuous",
  "title": "Auto-renewal terms are not shown before purchase",
  "detail": "The checkout page in US-CA (mobile) shows no renewal terms near the subscribe button.",
  "stage": "signup",
  "severity": "high",
  "status": "fail",
  "state": "open",
  "note": null,
  "jurisdictions": [
    "US-CA",
    "US-NY"
  ],
  "requirements": [
    {
      "id": "US-CA.17602.a.1",
      "jurisdiction": "US-CA",
      "citation": "Cal. Bus. & Prof. Code § 17602(a)(1)",
      "title": "Clear and conspicuous auto-renewal terms before purchase",
      "source_url": "https://leginfo.legislature.ca.gov/…"
    }
  ],
  "remediation": {
    "summary": "Show the auto-renewal terms next to the subscribe button.",
    "steps": [
      "Add the disclosure above the button"
    ],
    "platform": "stripe",
    "suggested_copy": "Your subscription renews automatically every month at $9.99 until you cancel.",
    "snippet": {
      "language": "html",
      "code": "<p class=\"renewal-terms\">…</p>"
    }
  },
  "confidence": 0.9,
  "evidence_refs": [],
  "details": {
    "failingRegions": [
      "US-CA"
    ]
  },
  "scan": "scan_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "first_seen": 1793318400,
  "last_seen": 1793318400,
  "resolved_at": 1793318400
}

Checkbox is compliance software, not a law firm; nothing in these docs is legal advice (details). For AI agents: every page is available as Markdown at the same URL plus .md; the index is /llms.txt.