CRD for developers
Build protection into your agency workflow.
Connect your agency’s software to CRD. Enroll real creators, request scans, track findings, and receive signed webhooks.
On this page
Your experience. CRD infrastructure.
Your backend connects your agency’s creator profiles to CRD. CRD runs eligible scans through its engine and returns progress, findings, and events for your application. Your integration sends the information it is authorized to share; the API does not automatically retrieve data from another platform.
Your application → Your backend → CRD Agency API → CRD engine
Your application ← Your backend ← Results & signed webhooksStart with a verified agency account
Create an agency through the CRD app’s /create-agency flow. Complete agency onboarding and agency KYC. Once the existing KYC review approves the agency, API access is provisioned automatically when the owner opens the API section. Creating an account or submitting KYC does not automatically approve the agency.
The agency owner then uses /agency/api for keys, webhook endpoints, usage, and available billing tools. Every API customer follows this agency account model, including software companies integrating CRD. Each agency receives one assigned workspace.
Connect one agency or several independent agencies
A key belongs to one CRD agency workspace and covers the creators that agency is currently allowed to access. You do not create a new API key for each creator. If your software serves several independent CRD agencies, store and select a separate agency credential and workspace for each customer.
Keep three identifiers distinct: your external_id identifies a creator in your software; crt_… is the creator ID used in CRD API paths; crd_user_id is the existing native CRD account UUID. Store the returned mapping instead of deriving identifiers from names or email addresses.
Your server sends the creator information it is authorized to share and stores the API secret. The API does not automatically retrieve accounts or data from another platform.
Connect to the live service
The live API uses crd_live_ credentials and dispatches to the configured CRD engine. An unavailable engine or agency verifier returns an error. The service never substitutes a synthetic result for a real request.
The live API is served at https://api.crd.systems, and every example in this reference uses that address. During the preview, access is limited to agencies CRD has enabled.
Creator invitations send real onboarding email. Eligible scans can trigger CRD’s existing reporting workflows. Use authorized creator data and understand the operation before sending a live write.
One integration, your agency workflow
| Capability | How it works |
|---|---|
| Creators & aliases | Link an existing agency creator or invite a creator through CRD onboarding. |
| Authorization | Read eligibility based on the creator’s actual CRD mandate and entitlement. |
| Scanning | Request real scans and retrieve findings from those exact jobs. |
| Google deindex | Queue a request in CRD and track its actual processing status. |
| Events & webhooks | Receive signed HTTPS deliveries and recover events through the API. |
| Usage | Read active API scan schedule time and configured price estimates. |
Build against the documented contract
This reference defines request fields and response schemas. Examples use fictional identities and placeholder resource IDs. Replace them with your agency’s returned identifiers.
Names, aliases, and supported profile URLs use the same creator data in the API and CRD agency dashboard. Findings for current agency creators come from their existing native CRD leak records, including records found before API scans. Media uploads, biometric matching, bulk enrollment, and profile deletion are not available through this contract. The API’s scan schedule is separate from the creator’s CRD subscription.
Request & response example
https://api.crd.systems/v1/creatorscurl --request POST 'https://api.crd.systems/v1/creators' \
--header "Authorization: Bearer $CRD_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"workspace_id": "wsp_example",
"external_id": "creator_001",
"crd_user_id": "33333333-3333-4333-8333-333333333333",
"display_name": "Example Creator",
"aliases": [
"example_creator"
],
"profile_urls": [
"https://onlyfans.com/example_creator"
]
}'{
"id": "crt_example",
"workspace_id": "wsp_example",
"external_id": "creator_001",
"display_name": "Example Creator",
"aliases": [
"example_creator"
],
"profile_urls": [
"https://onlyfans.com/example_creator"
],
"protection_status": "not_activated",
"created_at": 1790035200000,
"enrollment_status": "linked",
"crd_user_id": "33333333-3333-4333-8333-333333333333",
"invitation_id": null,
"simulated": false,
"scan_schedule_managed_by": "api",
"crd_subscription_managed_by": "crd",
"identity_sync_pending": false,
"email_sent": false
}Illustrative response. Replace example resource IDs with the IDs returned by your API requests. View endpoint details.