redact-secret · Report · Detector
Paddle API keys
Format evidence
- Provider documentation Paddle docs "API keys" (observed 2026-09-29): "They're 69 characters in length and always contain five underscores. You can use regex to match API keys: ^pdl_(live|sdbx)_apikey_[a-z\d]{26}_[a-zA-Z\d]{22}_[a-zA-Z\d]{3}$"; "API keys are case-sensitive"; keys created before 2025-05-06 are legacy 50-character lowercase alphanumeric strings · observed 2026-09-29 · pdl_live_apikey_ or pdl_sdbx_apikey_ + 26 [a-z0-9] + _ + 22 [A-Za-z0-9] + _ + 3 [A-Za-z0-9], 69 in all
- Reference 1
- Reference 2
- Reference 3
- Reference 4
- Reference 5
- Reference 6
- Reference 7
- Reference 8
- Reference 9
Arrival evidence (#528, product redact-secret#1033; #1014 handoff paddle.md, READY). A Paddle Billing API key is a server-side credential for a merchant-of-record account; with full permissions it reads and changes customers, subscriptions, transactions, prices and adjustments (refunds and credits). Sandbox keys act on the sandbox only and are the same family (a committed sandbox key is still a policy violation). T1 for every part: the provider docs publish the full regex and the total length, and the Node SDK mocks carry a masked key and an apikey_ id in the same layout. Excluded: legacy keys (50 [a-z0-9], no prefix; generic context covers PADDLE_API_KEY=), the apikey_ + 26 key id alone (a non-secret identifier returned by the API and in webhooks, Q5), Paddle.js client-side tokens and Paddle Classic vendor auth codes. Neither pinned peer has a Paddle rule. Graduated to a registry detector at the 4fb7882 re-pin (redact-secret PR #1039).
What the run recorded, by group
| Group | Fixtures | Leaked or false alarms | Near-twins | Outcomes | Other scanners, same cell |
|---|---|---|---|---|---|
| Must not flag · Tool-corroborated | 18 | False alarmsat most 17.6%0 of 18 controls flagged | 18 quiet · 0 flagged |
| |
| Must not flag · Project policy | 8 | False alarmsat most 32.4%0 of 8 controls flagged | 8 quiet · 0 flagged |
| |
| Must redact · Provider-documented | 15 | Secret spans left readableat most 20.4%0 of 15 spans | Near-twins told apartat least 75.7%12 of 12 pairs | 15 redacted · 0 too much · 0 partly exposed · 0 missed |
|
- Fixtures
- 41
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
Fixtures for this detector
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
paddle-api-key-bare-prosepaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-bearer-headerpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-chat-pastepaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-dotenvpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-exportpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-json-api-keypaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-json-tokenpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-key-shape-barepaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-key-shape-quotedpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-key-shape-unicode-crlfpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-node-sdk-constructorpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-python-sdk-clientpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-sandbox-dotenvpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-sdk-kwargpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-x-api-key-headerpaddle · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
paddle-api-key-actions-secret-referencepaddle · templated-reference | Must not flagT3 · Project policy | Quiet |
paddle-api-key-api-list-key-id-public-idpaddle · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
paddle-api-key-docs-regex-placeholderpaddle · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
paddle-api-key-ellipsis-placeholderpaddle · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
paddle-api-key-env-reference-referencepaddle · templated-reference | Must not flagT3 · Project policy | Quiet |
paddle-api-key-hyphen-separator-twinpaddle · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-id-25-twinpaddle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-id-27-twinpaddle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-key-guidance-prosepaddle · prose-mention | Must not flagT3 · Project policy | Quiet |
paddle-api-key-label-prosepaddle · benign-lookalike | Must not flagT3 · Project policy | Quiet |
paddle-api-key-leading-glue-twinpaddle · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-legacy-shaped-build-id-encoded-valuepaddle · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
paddle-api-key-maskpaddle · benign-lookalike | Must not flagT3 · Project policy | Quiet |
paddle-api-key-missing-apikey-twinpaddle · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-prefix-onlypaddle · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
paddle-api-key-referencepaddle · benign-lookalike | Must not flagT3 · Project policy | Quiet |
paddle-api-key-secret-21-twinpaddle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-secret-23-twinpaddle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-short-bodypaddle · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
paddle-api-key-suffix-2-twinpaddle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-suffix-4-twinpaddle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-test-environment-twinpaddle · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-trailing-glue-twinpaddle · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-truncated-near-misspaddle · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
paddle-api-key-uppercase-in-id-twinpaddle · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
paddle-api-key-webhook-key-id-public-idpaddle · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |