Skip to content
ContentRemovalDeskDocumentation

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.

REST API · JSONv0.8.0 · Live CRD integration
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.

Integration flowtext
Your application → Your backend → CRD Agency API → CRD engine
Your application ← Your backend ← Results & signed webhooks

Start 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, the API account itself is provisioned automatically when the owner opens the API section. Creating an account or submitting KYC does not automatically approve the agency.

API access is available to all agencies after completed onboarding and KYC approval. No separate pilot approval is needed.

The agency owner then uses /agency/api for keys, webhook endpoints and usage. There is no separate API price to negotiate: API access is included in agency protection; billing depends on the agency agreement, and only your agency’s own owner creates or manages this account, from /agency/api — CRD staff cannot do it for you. 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.

Use your own backend

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. Access requires a verified agency account and an owner-issued API key.

Requests can have real effects

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.

What the API supports

Google submissions are not an API action

There is no public endpoint that sends a Google notice, directly removes a search result, or sends an arbitrary DMCA notice. CRD's own engine already queues de-indexing automatically the moment a scan — yours or CRD's own — finds an actionable match; nothing in your integration needs to request it separately.

CapabilityAvailable behavior
Creators & identityRead the agency roster, link or invite creators, and update names, aliases, official profiles and profile photos.
Protection & scanningRead authorization and entitlement, activate API protection, and request an additional scan. Recurring scanning is managed by CRD and requires active protection.
Reports & removal trackingReport a leak or impersonation URL to CRD. Read synchronized leak cases and their current status; impersonation statuses have their own collection and signed webhook events.
Events & webhooksReceive signed creator, scan and leak-case updates. Recover recorded events with GET /v1/events.
UsageRead active API protection time. API access is included in the agency plan; usage responses are not invoices.

Build against the documented contract

The API and agency portal use the same creator identity and native CRD leak records. Synchronization is asynchronous: refresh resources after an event and retain stable IDs. Examples use fictional identities and placeholder IDs, not demo endpoints.

Supported writes include profile photos fetched from a public HTTPS URL. There is no general media-upload API, biometric-matching API, bulk-enrollment endpoint, creator-signature endpoint, or deletion of a creator account. DELETE /v1/creators/{id} cancels a pending invitation or detaches an accepted creator before onboarding completes; it never deletes the underlying user or legal/leak records.

This public reference describes the current agency-account model. Software serving several independent CRD agencies uses separate agency credentials; there is no public reseller master key or delegated manager-signature flow.

Request & response example

API BASE URL
https://api.crd.systems
POST/v1/creators
curl --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"
  ]
}'
Use your secret key in the environment variable.
Example response · 201
{
  "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.