{"openapi":"3.1.0","info":{"title":"CertScore API v2 draft","version":"0.1.6","description":"Draft resource-oriented CertScore public API contract for scans, jobs, findings, domain latest scans, and Pulse projections. CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."},"servers":[{"url":"https://certscore.ai"}],"security":[{"bearerAuth":[]}],"paths":{"/api/v2/keys/request":{"post":{"operationId":"requestReadOnlyApiKey","tags":["Auth"],"summary":"Issue a self-serve read-only API key for signed-in verified users.","description":"Creates a 90-day key prefixed cs_ro_ with scan:read and mcp access only. scan:create remains support-gated. The route requires an authenticated CertScore dashboard session with a verified non-disposable email address. Issuance is capped per email and per requester network and every issuance/denial is audited.","security":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadOnlyApiKeyRequest"},"examples":{"named":{"value":{"name":"Claude Desktop read-only MCP"}}}}}},"responses":{"201":{"description":"Read-only API key issued. Store the token immediately; only the hash is retained.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedApiKey"},"examples":{"issued":{"value":{"type":"certscore_api_key","key":"cs_ro_example_redacted","tokenPrefix":"cs_ro_example","scopes":["scan:read","mcp"],"expiresAt":"2026-09-28T00:00:00.000Z","rateLimits":{"requestsPerMinute":60,"scanReadsPerDay":500},"usageGuidance":{"scanCreateRequiresSupport":true,"scanCreateRequestEmail":"support@certscore.ai"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid request.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"401":{"description":"Sign-in required.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"403":{"description":"Verified non-disposable email required.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Issuance cap reached.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/auth/check":{"get":{"operationId":"checkIntegrationCredential","tags":["Auth"],"summary":"Check a bearer credential without creating a scan.","description":"Validates the bearer credential and returns its granted scopes. This endpoint is side-effect free and does not expose report data.","responses":{"200":{"description":"Credential is valid.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"type":"object","required":["type","authenticated","scopes"],"properties":{"type":{"type":"string","enum":["certscore_auth_check"]},"authenticated":{"type":"boolean","const":true},"scopes":{"type":"array","items":{"type":"string"}},"expiresAt":{"type":["string","null"],"format":"date-time"},"disclaimer":{"type":"string"}}}}}},"401":{"description":"Credential missing or invalid.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"403":{"description":"Credential is missing a required scope.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans":{"post":{"operationId":"createScan","tags":["Scans"],"summary":"Create or reuse a CertScore public-web scan.","description":"Submit a public URL for CertScore automated public-web observations. The response may be a queued job or an already completed scan reference. This v2 route reuses the existing Pulse scan creation, reuse, validation, and throttling path, then returns v2 Scan or ScanJob resources. Bearer authentication is optional for a reduced-friction anonymous path: unauthenticated new scans are limited to 20 per requester IP per UTC day, while recent-result reuse does not consume the quota. Contact support@certscore.ai for a higher-volume allowance.","security":[{},{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScanRequest"},"examples":{"create":{"summary":"Create or reuse a public-web scan","value":{"url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","freshness":"latest","scanFrom":"eu_ie"}}}}}},"responses":{"200":{"description":"A completed or reusable scan resource is available.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"},"examples":{"completed":{"value":{"type":"certscore_scan","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","status":"completed","score":82,"scoreStatus":"final","scoreVersion":"overall-score.v2","scoreUpdatedAt":"2026-06-30T12:00:10.000Z","riskLevel":"review_recommended","coverage":{"status":"complete","summary":"Automated public-web scan completed for the observed public surfaces.","limitations":["Automated public-web scan only."]},"executionMode":"reused_scan","reused":true,"reusedScanAgeSeconds":90,"freshnessDecision":"reused_existing_scan","quotaConsumed":false,"anonymousQuotaLimit":20,"anonymousQuotaRemaining":8,"anonymousQuotaResetAt":"2026-07-16T00:00:00.000Z","upgradeSupportEmail":"support@certscore.ai","upgradeMessage":"For a higher-volume allowance, contact support@certscore.ai.","recommendedNextTool":"certscore_get_scan_bundle","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","findings":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"202":{"description":"Scan job queued or running.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanJob"},"examples":{"pending":{"value":{"type":"certscore_scan_job","jobId":"pulse_job_123","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","status":"running","phase":"runtime_observation","startedAt":"2026-06-30T12:00:01.000Z","completedAt":null,"scanTimeSeconds":null,"phaseStartedAt":"2026-06-30T12:00:01.000Z","lastHeartbeatAt":"2026-06-30T12:00:06.000Z","progressPercent":35,"progressIsEstimate":true,"estimatedRemainingSeconds":null,"stalled":false,"retryAfterSeconds":2,"reportUrl":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123","recommendedNextAction":"Poll certscore_get_scan_status with scanId 00000000-0000-4000-8000-000000000123 after the recommended delay.","executionMode":"new_scan","reused":false,"reusedScanAgeSeconds":null,"freshnessDecision":"no_eligible_recent_scan_queued","quotaConsumed":true,"anonymousQuotaLimit":20,"anonymousQuotaRemaining":7,"anonymousQuotaResetAt":"2026-07-16T00:00:00.000Z","upgradeSupportEmail":"support@certscore.ai","upgradeMessage":"For a higher-volume allowance, contact support@certscore.ai.","recommendedNextTool":"certscore_get_scan_status","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid request.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"401":{"description":"Bearer credential is invalid when Authorization is supplied.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"403":{"description":"API key is missing the required scope.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Rate limited.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans/{scanId}":{"get":{"operationId":"getScan","tags":["Scans"],"summary":"Retrieve a CertScore scan resource.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scan resource.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"},"examples":{"completed":{"value":{"type":"certscore_scan","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","status":"completed","score":82,"scoreStatus":"final","scoreVersion":"overall-score.v2","scoreUpdatedAt":"2026-06-30T12:00:10.000Z","riskLevel":"review_recommended","coverage":{"status":"complete","summary":"Automated public-web scan completed for the observed public surfaces.","limitations":["Automated public-web scan only."]},"executionMode":"reused_scan","reused":true,"reusedScanAgeSeconds":90,"freshnessDecision":"reused_existing_scan","quotaConsumed":false,"anonymousQuotaLimit":20,"anonymousQuotaRemaining":8,"anonymousQuotaResetAt":"2026-07-16T00:00:00.000Z","upgradeSupportEmail":"support@certscore.ai","upgradeMessage":"For a higher-volume allowance, contact support@certscore.ai.","recommendedNextTool":"certscore_get_scan_bundle","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","findings":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans/{scanId}/status":{"get":{"operationId":"getScanStatus","tags":["Scans"],"summary":"Retrieve scan job/status information.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scan status.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanJob"},"examples":{"running":{"value":{"type":"certscore_scan_job","jobId":"pulse_job_123","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","status":"running","phase":"runtime_observation","startedAt":"2026-06-30T12:00:01.000Z","completedAt":null,"scanTimeSeconds":null,"phaseStartedAt":"2026-06-30T12:00:01.000Z","lastHeartbeatAt":"2026-06-30T12:00:06.000Z","progressPercent":35,"progressIsEstimate":true,"estimatedRemainingSeconds":null,"stalled":false,"retryAfterSeconds":2,"reportUrl":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123","recommendedNextAction":"Poll certscore_get_scan_status with scanId 00000000-0000-4000-8000-000000000123 after the recommended delay.","executionMode":"new_scan","reused":false,"reusedScanAgeSeconds":null,"freshnessDecision":"no_eligible_recent_scan_queued","quotaConsumed":true,"anonymousQuotaLimit":20,"anonymousQuotaRemaining":7,"anonymousQuotaResetAt":"2026-07-16T00:00:00.000Z","upgradeSupportEmail":"support@certscore.ai","upgradeMessage":"For a higher-volume allowance, contact support@certscore.ai.","recommendedNextTool":"certscore_get_scan_status","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"Scan or job not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans/{scanId}/diagnostics":{"get":{"operationId":"getScanDiagnostics","tags":["Scans"],"summary":"Retrieve bounded scan phase and policy-discovery diagnostics.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded scan diagnostics.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanDiagnostics"}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans/{scanId}/findings":{"get":{"operationId":"listScanFindings","tags":["Findings"],"summary":"List already-projected public-safe findings for a scan.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Finding list.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingList"},"examples":{"findings":{"value":{"type":"certscore_finding_list","scanId":"00000000-0000-4000-8000-000000000123","findings":[{"type":"certscore_finding","id":"pre_consent_tracking_detected","scanId":"00000000-0000-4000-8000-000000000123","label":"Tracking started before consent","criticality":"high","confidence":"strong","plainEnglish":"A third-party tracking request was observed before a recorded consent choice.","reviewLenses":["Privacy and consent"],"evidence":{"basis":"runtime_observation","summary":"Public-safe projected evidence summary from the completed report.","phase":"before_consent","exampleCount":2,"examplesShown":1,"examplesAvailable":2,"authRequiredForExamples":false,"excerpt":{"excerpt":"Public-safe projected evidence summary from the completed report.","isTruncated":false,"truncationMarker":null,"sourceUrl":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/privacy-evidence.html","evidenceUrl":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings/pre_consent_tracking_detected"},"examples":[{"type":"request","vendor":"Example Analytics","urlHost":"analytics.example.test","phase":"before_consent"}],"hasTimingAnchor":true,"hasVendorAnchor":true,"hasConsentContext":true},"nextStep":"Review whether this vendor should be consent-gated.","disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}],"links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans/{scanId}/findings/{findingId}":{"get":{"operationId":"getScanFinding","tags":["Findings"],"summary":"Retrieve one already-projected public-safe finding.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}},{"name":"findingId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Finding detail.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Finding"},"examples":{"finding":{"value":{"type":"certscore_finding","id":"pre_consent_tracking_detected","scanId":"00000000-0000-4000-8000-000000000123","label":"Tracking started before consent","criticality":"high","confidence":"strong","plainEnglish":"A third-party tracking request was observed before a recorded consent choice.","reviewLenses":["Privacy and consent"],"evidence":{"basis":"runtime_observation","summary":"Public-safe projected evidence summary from the completed report.","phase":"before_consent","exampleCount":2,"examplesShown":1,"examplesAvailable":2,"authRequiredForExamples":false,"excerpt":{"excerpt":"Public-safe projected evidence summary from the completed report.","isTruncated":false,"truncationMarker":null,"sourceUrl":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/privacy-evidence.html","evidenceUrl":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings/pre_consent_tracking_detected"},"examples":[{"type":"request","vendor":"Example Analytics","urlHost":"analytics.example.test","phase":"before_consent"}],"hasTimingAnchor":true,"hasVendorAnchor":true,"hasConsentContext":true},"nextStep":"Review whether this vendor should be consent-gated.","disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid scan or finding ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"Finding not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/domains/{domain}/latest":{"get":{"operationId":"getLatestDomainScan","tags":["Domains"],"summary":"Retrieve the latest public-safe scan for a domain.","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string"}},{"name":"scanFrom","in":"query","required":false,"schema":{"type":"string","enum":["eu_de","eu_ie","california"],"default":"eu_ie"},"description":"Execution context for selecting matching eligible scans. Invalid values default to eu_ie."}],"responses":{"200":{"description":"Latest domain scan. The scan field is null when no eligible public scan exists.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainLatestScan"},"examples":{"latest":{"value":{"type":"certscore_domain_latest_scan","domain":"ergoveritas.com","scan":{"type":"certscore_scan","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","status":"completed","score":82,"scoreStatus":"final","scoreVersion":"overall-score.v2","scoreUpdatedAt":"2026-06-30T12:00:10.000Z","riskLevel":"review_recommended","coverage":{"status":"complete","summary":"Automated public-web scan completed for the observed public surfaces.","limitations":["Automated public-web scan only."]},"executionMode":"reused_scan","reused":true,"reusedScanAgeSeconds":90,"freshnessDecision":"reused_existing_scan","quotaConsumed":false,"anonymousQuotaLimit":20,"anonymousQuotaRemaining":8,"anonymousQuotaResetAt":"2026-07-16T00:00:00.000Z","upgradeSupportEmail":"support@certscore.ai","upgradeMessage":"For a higher-volume allowance, contact support@certscore.ai.","recommendedNextTool":"certscore_get_scan_bundle","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","findings":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."},"links":{"self":"https://certscore.ai/api/v2/domains/ergoveritas.com/latest","docs":"https://certscore.ai/developers/reference"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid domain.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans/{scanId}/pulse":{"get":{"operationId":"getScanPulse","tags":["Pulse"],"summary":"Retrieve the Pulse projection for a scan.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Pulse projection.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanPulse"},"examples":{"pulse":{"value":{"type":"certscore_scan_pulse","scanId":"00000000-0000-4000-8000-000000000123","pulse":{"type":"certscore_pulse","scanId":"00000000-0000-4000-8000-000000000123","summary":{"headline":"Automated scan surfaced public-web review signals.","score":82},"links":{"fullReportUrl":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/scans/{scanId}/pre-consent-cookies-trackers":{"get":{"operationId":"getScanPreConsentCookiesTrackers","tags":["Scans","Runtime Inventory"],"summary":"Retrieve public-safe Cookies & Trackers (Pre-consent) table data as JSON.","description":"Returns the same public-safe report projection used for CertScore's Cookies & Trackers (Pre-consent) table. Rows are compact, values and raw request details are stripped, and host fields are reduced to host/domain form. CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Pre-consent cookie and tracker table data.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreConsentCookiesTrackers"},"examples":{"success":{"value":{"type":"certscore_pre_consent_cookies_trackers","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","generatedAt":"2026-06-30T12:00:10.000Z","summary":{"rowCount":2,"trackerCount":1,"cookieCount":1,"requestCount":3},"rows":[{"id":"tracker:example-analytics:analytics:analytics-example-test","kind":"tracker","name":"Example Analytics","vendor":"Example Analytics","host":"analytics.example.test","registrableDomain":"example.test","category":"Analytics","purpose":"Analytics","priority":"medium","confidence":"high","party":"third_party","requestCount":3,"phase":"pre_consent","observedBeforeConsent":true,"evidenceBasis":"public_report_projection","firstObservedAtMs":1234,"pageUrlHost":"ergoveritas.com"},{"id":"cookie:google:advertising:doubleclick-net","kind":"cookie","name":"Google","vendor":"Google","host":"doubleclick.net","registrableDomain":"doubleclick.net","category":"Advertising","purpose":"Advertising","priority":"high","confidence":"high","party":"third_party","requestCount":null,"phase":"pre_consent","observedBeforeConsent":true,"evidenceBasis":"public_report_projection","firstObservedAtMs":512,"pageUrlHost":"ergoveritas.com"}],"links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pre-consent-cookies-trackers","scan":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123","docs":"https://certscore.ai/developers/examples#pre-consent-cookies-trackers-json"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"empty":{"value":{"type":"certscore_pre_consent_cookies_trackers","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","generatedAt":"2026-06-30T12:00:10.000Z","summary":{"rowCount":0,"trackerCount":0,"cookieCount":0,"requestCount":0},"rows":[],"links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pre-consent-cookies-trackers","scan":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123","docs":"https://certscore.ai/developers/examples#pre-consent-cookies-trackers-json"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"202":{"description":"If a scan is still pending, poll scan status and retry after completion.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanJob"},"examples":{"pending":{"value":{"type":"certscore_scan_job","jobId":"pulse_job_123","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","status":"running","phase":"runtime_observation","startedAt":"2026-06-30T12:00:01.000Z","completedAt":null,"scanTimeSeconds":null,"phaseStartedAt":"2026-06-30T12:00:01.000Z","lastHeartbeatAt":"2026-06-30T12:00:06.000Z","progressPercent":35,"progressIsEstimate":true,"estimatedRemainingSeconds":null,"stalled":false,"retryAfterSeconds":2,"reportUrl":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123","recommendedNextAction":"Poll certscore_get_scan_status with scanId 00000000-0000-4000-8000-000000000123 after the recommended delay.","executionMode":"new_scan","reused":false,"reusedScanAgeSeconds":null,"freshnessDecision":"no_eligible_recent_scan_queued","quotaConsumed":true,"anonymousQuotaLimit":20,"anonymousQuotaRemaining":7,"anonymousQuotaResetAt":"2026-07-16T00:00:00.000Z","upgradeSupportEmail":"support@certscore.ai","upgradeMessage":"For a higher-volume allowance, contact support@certscore.ai.","recommendedNextTool":"certscore_get_scan_status","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/domains/{domain}/latest/pre-consent-cookies-trackers":{"get":{"operationId":"getLatestDomainPreConsentCookiesTrackers","tags":["Domains","Runtime Inventory"],"summary":"Retrieve latest-domain Cookies & Trackers (Pre-consent) table data.","description":"Convenience endpoint for the latest eligible public scan for a domain. The response is the same public-safe table projection as the scan-specific endpoint. CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination.","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string"}},{"name":"scanFrom","in":"query","required":false,"schema":{"type":"string","enum":["eu_de","eu_ie","california"],"default":"eu_ie"}}],"responses":{"200":{"description":"Pre-consent cookie and tracker table data from the latest eligible scan.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreConsentCookiesTrackers"},"examples":{"success":{"value":{"type":"certscore_pre_consent_cookies_trackers","scanId":"00000000-0000-4000-8000-000000000123","domain":"ergoveritas.com","generatedAt":"2026-06-30T12:00:10.000Z","summary":{"rowCount":2,"trackerCount":1,"cookieCount":1,"requestCount":3},"rows":[{"id":"tracker:example-analytics:analytics:analytics-example-test","kind":"tracker","name":"Example Analytics","vendor":"Example Analytics","host":"analytics.example.test","registrableDomain":"example.test","category":"Analytics","purpose":"Analytics","priority":"medium","confidence":"high","party":"third_party","requestCount":3,"phase":"pre_consent","observedBeforeConsent":true,"evidenceBasis":"public_report_projection","firstObservedAtMs":1234,"pageUrlHost":"ergoveritas.com"},{"id":"cookie:google:advertising:doubleclick-net","kind":"cookie","name":"Google","vendor":"Google","host":"doubleclick.net","registrableDomain":"doubleclick.net","category":"Advertising","purpose":"Advertising","priority":"high","confidence":"high","party":"third_party","requestCount":null,"phase":"pre_consent","observedBeforeConsent":true,"evidenceBasis":"public_report_projection","firstObservedAtMs":512,"pageUrlHost":"ergoveritas.com"}],"links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pre-consent-cookies-trackers","scan":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123","docs":"https://certscore.ai/developers/examples#pre-consent-cookies-trackers-json"},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"400":{"description":"Invalid domain.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"404":{"description":"No eligible public scan exists for the domain.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"429":{"description":"Weighted scan-resource read limit reached. Honor Retry-After before retrying and do not poll terminal scan resources.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}},"/api/v2/health":{"get":{"operationId":"getApiV2Health","tags":["Diagnostics"],"summary":"Check API v2 connectivity.","responses":{"200":{"description":"API v2 health response.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"},"examples":{"ok":{"value":{"ok":true,"service":"certscore-api","version":"v2","generatedAt":"2026-06-30T00:00:00.000Z"}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Correct the request before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and review authentication before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and request the required scope before retrying."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found.","retryable":false,"retryAfterSeconds":null,"recommendedNextAction":"Stop and verify the scan ID."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Completed scan resource read limit exceeded. Retry after 60 seconds.","retryable":true,"retryAfterSeconds":60,"recommendedNextAction":"Wait for Retry-After, then make one bounded retrieval. Do not poll terminal scan resources."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later.","retryable":true,"retryAfterSeconds":30,"recommendedNextAction":"Retry after 30 seconds. If the error repeats, stop and contact CertScore support."},"disclaimer":"CertScore outputs are automated public-web observations for review. They are not legal advice, certification, or a compliance determination."}}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Scoped CertScore integration API key."}},"schemas":{"CreateScanRequest":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string"},"freshness":{"type":"string","enum":["latest","refresh"],"default":"latest","description":"Use latest to reuse recent eligible scans. Use refresh to request a new scan when eligible; refresh bypasses the 24-hour recent-scan reuse check but not validation or throttles."},"scanFrom":{"type":"string","enum":["eu_de","eu_ie","california"],"default":"eu_ie"},"callbackUrl":{"type":"string","format":"uri"},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}},"ReadOnlyApiKeyRequest":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","minLength":2,"maxLength":80}}},"IssuedApiKey":{"type":"object","additionalProperties":false,"required":["type","key","tokenPrefix","scopes","expiresAt","rateLimits","usageGuidance","disclaimer"],"properties":{"type":{"type":"string","const":"certscore_api_key"},"key":{"type":"string","pattern":"^cs_ro_"},"tokenPrefix":{"type":"string","pattern":"^cs_ro_"},"scopes":{"type":"array","items":{"type":"string","enum":["scan:read","mcp"]}},"expiresAt":{"type":"string","format":"date-time"},"rateLimits":{"type":"object","additionalProperties":false,"required":["requestsPerMinute","scanReadsPerDay"],"properties":{"requestsPerMinute":{"type":"integer","const":60},"scanReadsPerDay":{"type":"integer","const":500}}},"usageGuidance":{"type":"object","additionalProperties":false,"required":["scanCreateRequiresSupport","scanCreateRequestEmail"],"properties":{"scanCreateRequiresSupport":{"type":"boolean","const":true},"scanCreateRequestEmail":{"type":"string","const":"support@certscore.ai"}}},"disclaimer":{"type":"string"}}},"ScanJob":{"type":"object","additionalProperties":true,"required":["type","jobId","status"],"properties":{"type":{"type":"string","const":"certscore_scan_job"},"jobId":{"type":"string"},"scanId":{"type":["string","null"]},"domain":{"type":["string","null"]},"url":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","finalizing","completed","completed_limited","failed","expired","rate_limited"]},"resultDisposition":{"type":"string","enum":["no_go"]},"noGo":{"type":"object","additionalProperties":true,"description":"Reason-specific public no-go presentation; includes reasonCode, title, explanation, summary, limitationKind, recommendedNextAction, retryLikelyToHelp, and a bounded evidenceExcerpt when available."},"phase":{"type":"string"},"createdAt":{"type":"string"},"startedAt":{"type":["string","null"]},"completedAt":{"type":["string","null"]},"scanTimeSeconds":{"type":["number","null"]},"score":{"type":["integer","null"],"minimum":0,"maximum":100},"scoreStatus":{"type":"string","enum":["provisional","final"]},"scoreVersion":{"type":["string","null"]},"scoreUpdatedAt":{"type":["string","null"],"format":"date-time"},"riskLevel":{"type":["string","null"]},"coverage":{"type":["object","null"],"additionalProperties":true},"lastUpdatedAt":{"type":"string"},"phaseStartedAt":{"type":["string","null"]},"lastHeartbeatAt":{"type":["string","null"]},"progressPercent":{"type":"integer","minimum":0,"maximum":100},"progressIsEstimate":{"type":"boolean"},"estimatedRemainingSeconds":{"type":["integer","null"],"minimum":0},"stalled":{"type":"boolean"},"retryAfterSeconds":{"type":["integer","null"]},"error":{"type":"object","required":["code","message","retryable","retryAfterSeconds","recommendedNextAction"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":["integer","null"]},"recommendedNextAction":{"type":"string"}}},"reportUrl":{"type":["string","null"]},"recommendedNextAction":{"type":"string"},"executionMode":{"type":"string","enum":["new_scan","reused_scan"]},"reused":{"type":"boolean"},"reusedScanAgeSeconds":{"type":["integer","null"],"minimum":0},"freshnessDecision":{"type":"string"},"quotaConsumed":{"type":"boolean"},"anonymousQuotaLimit":{"type":["integer","null"],"minimum":0},"anonymousQuotaRemaining":{"type":["integer","null"],"minimum":0},"anonymousQuotaResetAt":{"type":["string","null"],"format":"date-time"},"upgradeSupportEmail":{"type":["string","null"],"format":"email"},"upgradeMessage":{"type":["string","null"],"description":"Higher-volume contact guidance for no-account callers."},"recommendedNextTool":{"type":"string","enum":["certscore_get_scan_status","certscore_get_scan_bundle"]},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"Scan":{"type":"object","additionalProperties":true,"required":["type","scanId","domain","status"],"properties":{"type":{"type":"string","const":"certscore_scan"},"scanId":{"type":"string"},"domain":{"type":"string"},"url":{"type":["string","null"]},"status":{"type":"string"},"resultDisposition":{"type":"string","enum":["no_go"]},"noGo":{"type":"object","additionalProperties":true,"description":"Reason-specific public no-go presentation; includes reasonCode, title, explanation, summary, limitationKind, recommendedNextAction, retryLikelyToHelp, and a bounded evidenceExcerpt when available."},"scanFrom":{"type":"string"},"createdAt":{"type":["string","null"]},"startedAt":{"type":["string","null"]},"completedAt":{"type":["string","null"]},"scanTimeSeconds":{"type":["number","null"]},"score":{"type":["integer","null"],"minimum":0,"maximum":100},"scoreStatus":{"type":"string","enum":["provisional","final"]},"scoreVersion":{"type":["string","null"]},"scoreUpdatedAt":{"type":["string","null"],"format":"date-time"},"riskLevel":{"type":["string","null"]},"coverage":{"type":"object","additionalProperties":true},"executionMode":{"type":"string","enum":["new_scan","reused_scan"]},"reused":{"type":"boolean"},"reusedScanAgeSeconds":{"type":["integer","null"],"minimum":0},"freshnessDecision":{"type":"string"},"quotaConsumed":{"type":"boolean"},"anonymousQuotaLimit":{"type":["integer","null"],"minimum":0},"anonymousQuotaRemaining":{"type":["integer","null"],"minimum":0},"anonymousQuotaResetAt":{"type":["string","null"],"format":"date-time"},"upgradeSupportEmail":{"type":["string","null"],"format":"email"},"upgradeMessage":{"type":["string","null"],"description":"Higher-volume contact guidance for no-account callers."},"recommendedNextTool":{"type":"string","enum":["certscore_get_scan_status","certscore_get_scan_bundle"]},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"ScanDiagnostics":{"type":"object","additionalProperties":false,"required":["type","schemaVersion","scanId","generatedAt","totalWallMs","phases","lanes","policyDiscovery"],"properties":{"type":{"type":"string","const":"certscore_scan_diagnostics"},"schemaVersion":{"type":"string","const":"scan-diagnostics.v1"},"scanId":{"type":"string"},"generatedAt":{"type":["string","null"]},"totalWallMs":{"type":["integer","null"],"minimum":0},"phases":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["name","lane","startedAtMs","completedAtMs","durationMs","outcome"],"properties":{"name":{"type":"string","maxLength":120},"lane":{"type":"string","enum":["scanner","browser","policy","persistence"]},"startedAtMs":{"type":["integer","null"],"minimum":0},"completedAtMs":{"type":["integer","null"],"minimum":0},"durationMs":{"type":"integer","minimum":0},"outcome":{"type":"string","enum":["success","degraded","failed","unknown"]}}}},"lanes":{"type":"array","maxItems":8,"items":{"type":"object","additionalProperties":false,"required":["laneId","physicalInvocationId","region","phaseName","startedAt","firstResponse","navigationCount","challengeDetection","executionOutcome","accessOutcome","completedAt","durationMs"],"properties":{"laneId":{"type":"string","enum":["consent_proof","runtime_evidence","policy_evidence"]},"physicalInvocationId":{"type":"string","maxLength":160},"region":{"type":"string","maxLength":80},"phaseName":{"type":"string","enum":["preConsentRuntimeScanner","policySurfaceScanner"]},"startedAt":{"type":"string","format":"date-time"},"firstResponse":{"anyOf":[{"type":"object","additionalProperties":false,"required":["at","offsetMs","httpStatus","effectiveUrl"],"properties":{"at":{"type":"string","format":"date-time"},"offsetMs":{"type":"integer","minimum":0},"httpStatus":{"type":"integer","minimum":100,"maximum":599},"effectiveUrl":{"type":["string","null"],"maxLength":500}}},{"type":"null"}]},"navigationCount":{"type":"integer","minimum":0},"challengeDetection":{"type":"object","additionalProperties":false,"required":["detected","type"],"properties":{"detected":{"type":"boolean"},"type":{"type":["string","null"],"maxLength":120}}},"executionOutcome":{"type":"string","enum":["success","degraded","failed"]},"accessOutcome":{"type":"string","enum":["representative_page","bot_challenge","access_denied","blank_or_unusable","navigation_failed","unknown"]},"completedAt":{"type":["string","null"],"format":"date-time"},"durationMs":{"type":"integer","minimum":0}}}},"policyDiscovery":{"type":"object","additionalProperties":false,"required":["candidatesDiscovered","candidatesAfterDeduplication","requestsStarted","successfulDocuments","timeouts","phaseWallMs","maxConcurrency","shortCircuitReason"],"properties":{"candidatesDiscovered":{"type":["integer","null"],"minimum":0},"candidatesAfterDeduplication":{"type":["integer","null"],"minimum":0},"requestsStarted":{"type":["integer","null"],"minimum":0},"successfulDocuments":{"type":["integer","null"],"minimum":0},"timeouts":{"type":["integer","null"],"minimum":0},"phaseWallMs":{"type":["integer","null"],"minimum":0},"maxConcurrency":{"type":["integer","null"],"minimum":1,"maximum":16},"shortCircuitReason":{"type":["string","null"],"maxLength":160}}},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"FindingList":{"type":"object","additionalProperties":true,"required":["type","scanId","findings"],"properties":{"type":{"type":"string","const":"certscore_finding_list"},"scanId":{"type":"string"},"findings":{"type":"array","items":{"$ref":"#/components/schemas/Finding"}},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"Finding":{"type":"object","additionalProperties":true,"required":["type","id","scanId","label","criticality","confidence","plainEnglish","evidence"],"properties":{"type":{"type":"string","const":"certscore_finding"},"id":{"type":"string"},"scanId":{"type":"string"},"label":{"type":"string"},"criticality":{"type":"string"},"confidence":{"type":"string","enum":["strong","good","moderate","weak","unknown"]},"plainEnglish":{"type":"string"},"reviewLenses":{"type":"array","items":{"type":"string"}},"evidence":{"$ref":"#/components/schemas/EvidenceSummary"},"nextStep":{"type":["string","null"]},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"EvidenceSummary":{"type":"object","additionalProperties":false,"required":["basis","summary","exampleCount","examplesShown"],"properties":{"basis":{"type":"string","enum":["runtime_observation","policy_surface_detection","accessibility_check","public_report_projection"]},"summary":{"type":"string"},"phase":{"type":["string","null"]},"exampleCount":{"type":"integer","minimum":0},"examplesShown":{"type":"integer","minimum":0},"examplesAvailable":{"type":"integer","minimum":0,"description":"Total bounded evidence examples available to this projection before public response caps are applied."},"authRequiredForExamples":{"type":"boolean","description":"True only when additional public-safe examples are withheld because the caller lacks authorization."},"examples":{"type":"array","maxItems":5,"items":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["request","page","accessibility_check","policy_surface"]},"vendor":{"type":["string","null"]},"urlHost":{"type":["string","null"]},"registrableDomain":{"type":["string","null"]},"observedAtMs":{"type":["integer","null"]},"phase":{"type":["string","null"]},"documentUrl":{"type":["string","null"],"maxLength":2048},"pageContextId":{"type":["string","null"],"maxLength":120},"requestUrl":{"type":["string","null"],"maxLength":2048,"description":"Public-safe request URL sample with query parameters redacted."},"rawObservedVendor":{"type":["string","null"],"maxLength":160,"description":"Original bounded vendor label retained before canonical endpoint resolution."},"rawObservedVendorCategory":{"type":["string","null"],"maxLength":120},"resolvedEndpointVendor":{"type":["string","null"],"maxLength":160,"description":"Canonical endpoint-resolved vendor label when available."},"resolvedEndpointVendorCategory":{"type":["string","null"],"maxLength":120},"vendorAttributionBasis":{"type":["string","null"],"maxLength":120},"relatedOrInitiatingVendor":{"type":["string","null"],"maxLength":160},"resourceType":{"type":["string","null"],"maxLength":80},"scannedPageUrl":{"type":["string","null"],"maxLength":2048},"frameUrl":{"type":["string","null"],"maxLength":2048},"finalUrl":{"type":["string","null"],"maxLength":2048},"initiatorHost":{"type":["string","null"],"maxLength":253},"initiatorType":{"type":["string","null"],"maxLength":80},"initiatorUrl":{"type":["string","null"],"maxLength":2048},"redirectChain":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":2048}},"projectionWarnings":{"type":"array","maxItems":12,"items":{"type":"string","maxLength":120}}}}},"projectionWarnings":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":120},"description":"Diagnostic projection warnings for reviewer workflows; they do not affect finding status or severity."},"excerpt":{"type":"object","additionalProperties":false,"required":["excerpt","isTruncated","truncationMarker","sourceUrl","evidenceUrl"],"properties":{"excerpt":{"type":"string"},"isTruncated":{"type":"boolean"},"truncationMarker":{"type":["string","null"]},"sourceUrl":{"type":["string","null"],"maxLength":2048},"evidenceUrl":{"type":"string","maxLength":2048}}},"hasTimingAnchor":{"type":"boolean"},"hasVendorAnchor":{"type":"boolean"},"hasConsentContext":{"type":"boolean"},"hasPolicyAnchor":{"type":"boolean"}}},"DomainLatestScan":{"type":"object","additionalProperties":true,"required":["type","domain","scan"],"properties":{"type":{"type":"string","const":"certscore_domain_latest_scan"},"domain":{"type":"string"},"scan":{"oneOf":[{"$ref":"#/components/schemas/Scan"},{"type":"null"}]},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"ScanPulse":{"type":"object","additionalProperties":true,"required":["type","scanId","pulse"],"properties":{"type":{"type":"string","const":"certscore_scan_pulse"},"scanId":{"type":"string"},"resultDisposition":{"type":"string","enum":["no_go"]},"noGo":{"type":"object","additionalProperties":true,"description":"Reason-specific public no-go presentation; includes reasonCode, title, explanation, summary, limitationKind, recommendedNextAction, retryLikelyToHelp, and a bounded evidenceExcerpt when available."},"pulse":{"type":"object","additionalProperties":true},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"PreConsentCookiesTrackers":{"type":"object","additionalProperties":true,"required":["type","scanId","domain","summary","rows"],"properties":{"type":{"type":"string","const":"certscore_pre_consent_cookies_trackers"},"scanId":{"type":"string"},"domain":{"type":"string"},"generatedAt":{"type":["string","null"]},"summary":{"type":"object","additionalProperties":false,"required":["rowCount","trackerCount","cookieCount","requestCount"],"properties":{"rowCount":{"type":"integer","minimum":0},"trackerCount":{"type":"integer","minimum":0},"cookieCount":{"type":"integer","minimum":0},"requestCount":{"type":"integer","minimum":0}}},"rows":{"type":"array","items":{"$ref":"#/components/schemas/PreConsentCookiesTrackersRow"}},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"PreConsentCookiesTrackersRow":{"type":"object","additionalProperties":false,"required":["id","kind","name","phase","observedBeforeConsent","evidenceBasis"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["cookie","tracker","request","storage","unknown"]},"name":{"type":"string"},"vendor":{"type":["string","null"]},"host":{"type":["string","null"],"description":"Host only; full URLs and query strings are not exposed."},"registrableDomain":{"type":["string","null"]},"category":{"type":["string","null"]},"purpose":{"type":["string","null"]},"priority":{"type":"string","enum":["high","medium","review_needed","contextual","unknown"]},"confidence":{"type":"string","enum":["high","medium","low","unknown"]},"party":{"type":"string","enum":["first_party","third_party","mixed","unknown"]},"requestCount":{"type":["integer","null"],"minimum":0},"phase":{"type":"string","const":"pre_consent"},"observedBeforeConsent":{"type":"boolean"},"evidenceBasis":{"type":"string","const":"public_report_projection"},"firstObservedAtMs":{"type":["integer","null"],"minimum":0},"pageUrlHost":{"type":["string","null"]}}},"Links":{"type":"object","additionalProperties":true,"properties":{"self":{"type":"string"},"status":{"type":"string"},"findings":{"type":"string"},"pulse":{"type":"string"},"report":{"type":"string"},"latestDomainScan":{"type":"string"},"docs":{"type":"string"}}},"ApiError":{"type":"object","additionalProperties":true,"required":["type","error"],"properties":{"type":{"type":"string","const":"certscore_api_error"},"error":{"type":"object","required":["code","message","retryable","retryAfterSeconds","recommendedNextAction"],"additionalProperties":true,"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":["integer","null"]},"recommendedNextAction":{"type":"string"},"rateLimit":{"type":"object","additionalProperties":false,"description":"Present for weighted scan-read throttles. Values identify the exact canonical policy decision.","required":["policyVersion","profile","scope","windowId","windowSeconds","limitUnits","usedUnits","requestedUnits"],"properties":{"policyVersion":{"type":"string"},"profile":{"type":"string","enum":["terminal","status"]},"scope":{"type":"string","enum":["callerTarget","target","caller"]},"windowId":{"type":"string","enum":["burst","daily"]},"windowSeconds":{"type":"integer"},"limitUnits":{"type":"integer"},"usedUnits":{"type":"integer"},"requestedUnits":{"type":"integer"}}}}},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"Health":{"type":"object","required":["ok","service","version"],"properties":{"ok":{"type":"boolean","const":true},"service":{"type":"string","const":"certscore-api"},"version":{"type":"string","const":"v2"},"generatedAt":{"type":"string","format":"date-time"}}}}},"x-certscore-read-rate-policy":{"policyVersion":"2026-08-14","windowSemantics":"rolling","unitWeights":{"ordinary":1,"evidence":4,"full":4,"diagnostics":4,"export":4,"bundle":4},"profiles":{"terminal":{"windows":[{"id":"burst","windowSeconds":600,"limits":{"callerTarget":120,"target":4000,"caller":480},"mcpProviderLimit":8000},{"id":"daily","windowSeconds":86400,"limits":{"callerTarget":1200},"mcpProviderLimit":40000}]},"status":{"windows":[{"id":"burst","windowSeconds":600,"limits":{"callerTarget":120,"target":10000,"caller":600},"mcpProviderLimit":20000}]}},"scopeDefinitions":{"callerTarget":"One authenticated caller or anonymous requester identity retrieving one scan or domain resource.","target":"One scan or domain resource across all callers.","caller":"One authenticated caller or anonymous requester identity across resources."},"throttledResponse":{"status":429,"retryHeader":"Retry-After","instruction":"Wait for Retry-After before retrying. Do not poll terminal scan resources."}}}