Indulgon Connect v1.0 -- Integrate data portability and identity verification into your platform.
Add two lines to your HTML. That is the entire integration.
<!-- Add the SDK script (once per page) -->
<script src="https://api.indulgon.com/connect/sdk.js?key=YOUR_API_KEY"></script>
<!-- Add a button wherever you want it -->
<div data-indulgon="import" data-platform="your-platform-name"></div>
The SDK automatically renders a styled button. When clicked, a popup opens where the model logs into Indulgon, authorizes the data transfer, and the popup closes. No page reload required.
<div data-indulgon="import" data-platform="onlyfans"></div>
Renders "Send Data to Indulgon". When clicked, the model authorizes your platform to send their earnings, subscribers, and payout data to their Indulgon account. The data-platform attribute identifies your platform in the import.
<div data-indulgon="verify"></div>
Renders "Verify with Indulgon". The model shares their Indulgon identity verification with your platform. You receive a time-limited token that confirms their identity, age, and 2257 compliance status.
<div data-indulgon="connect"></div>
Renders "Connect with Indulgon". General-purpose account linking. The model connects their Indulgon account to your platform for ongoing data sync.
All API calls require an API key. Pass it via header or query parameter:
# Header (recommended)
curl -H "x-api-key: snsr_your_api_key_here" https://api.indulgon.com/connect/api/usage
# Query parameter
curl https://api.indulgon.com/connect/api/usage?api_key=snsr_your_api_key_here
Get your API key by applying for partnership or calling POST /api/connect/register.
Register as a partner. Returns an API key and secret.
| Parameter | Type | Required | Description |
|---|---|---|---|
| partner_name | string | Yes | Your platform name |
| contact_email | string | Yes | Contact email |
| partner_domain | string | No | Your platform URL |
| contact_name | string | No | Contact person name |
Check if a user is verified on Indulgon. Two modes: email-based (returns yes/no only) or token-based (returns full verification details).
| Parameter | Type | Description |
|---|---|---|
| string | User email -- returns { found, verified, is_2257_compliant } | |
| token | string | Share token -- returns full verification: legal_name, age, 2257, document type |
Push earnings or subscriber data to a user's Indulgon account.
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_email | string | Yes | Indulgon user email |
| platform | string | Yes | Your platform identifier |
| data_type | string | Yes | earnings, subscribers, messages, or payouts |
| records | array | Yes | Array of data records (see Data Push Format) |
Check your API usage stats. Returns plan, monthly request count, limit, and per-endpoint breakdown.
Get current pricing tiers and feature lists. No authentication required.
Models verify their identity once on Indulgon. They can then share that verification with your platform via a time-limited, single-use token.
Model generates a share token. Requires model authentication.
| Parameter | Type | Description |
|---|---|---|
| platform | string | Name of the platform to share with |
| scopes | array | What to share: ["identity", "age", "2257"] |
| expires_hours | number | Token validity (default: 24 hours) |
Public endpoint. Check a share token. Returns verification details based on granted scopes. Token is consumed after one use.
Response fields (based on scopes):
| Scope | Fields Returned |
|---|---|
| identity | legal_name, document_type, document_country |
| age | age, date_of_birth, is_over_18 |
| 2257 | is_2257_compliant |
{
"platform_transaction_id": "txn_123456",
"date": "2025-01-15T14:30:00Z",
"gross_amount": 9.99,
"net_amount": 7.99,
"fee": 2.00,
"type": "subscription",
"from_user": "fan_username",
"refunded": false
}
{
"platform_subscriber_id": "sub_789",
"subscribe_date": "2025-01-10T00:00:00Z",
"expire_date": "2025-02-10T00:00:00Z",
"price": 9.99,
"auto_renew": true,
"status": "active"
}
Set a webhook_url during registration or update it via the API. We will POST events to your URL:
{
"event": "import.completed",
"user_email": "[email protected]",
"platform": "your-platform",
"data_type": "earnings",
"records_imported": 1500,
"timestamp": "2025-01-15T14:30:00Z"
}
Event types: import.completed, import.failed, verification.shared, verification.checked
| Plan | Monthly Limit | Burst Rate |
|---|---|---|
| Free | 1,000 calls | 10 calls/second |
| Basic ($99/mo) | 10,000 calls | 50 calls/second |
| Pro ($299/mo) | 100,000 calls | 200 calls/second |
| Enterprise | Unlimited | Custom |
When you exceed your limit, the API returns 429 Too Many Requests. The response includes a Retry-After header.
| Code | Meaning | What to Do |
|---|---|---|
| 200 | Success | Request processed normally |
| 400 | Bad Request | Check required parameters |
| 401 | Unauthorized | Check your API key |
| 404 | Not Found | Resource does not exist or token expired |
| 429 | Rate Limit Exceeded | Wait and retry, or upgrade your plan |
| 500 | Server Error | Contact support |
curl -X POST https://api.indulgon.com/connect/register \
-H "Content-Type: application/json" \
-d '{
"partner_name": "MyPlatform",
"contact_email": "[email protected]",
"partner_domain": "https://myplatform.com"
}'
curl -H "x-api-key: snsr_your_key" \
"https://api.indulgon.com/connect/api/verify-user?token=abc123def456"
curl -H "x-api-key: snsr_your_key" \
"https://api.indulgon.com/connect/api/[email protected]"
curl -X POST https://api.indulgon.com/connect/api/push-data \
-H "x-api-key: snsr_your_key" \
-H "Content-Type: application/json" \
-d '{
"user_email": "[email protected]",
"platform": "myplatform",
"data_type": "earnings",
"records": [
{
"platform_transaction_id": "txn_001",
"date": "2025-01-15T14:30:00Z",
"gross_amount": 25.00,
"net_amount": 20.00,
"type": "subscription"
}
]
}'
curl -H "x-api-key: snsr_your_key" \
"https://api.indulgon.com/connect/api/usage"
Every Indulgon user can export all their data at any time -- including data that originated on your platform. Exports are source-labeled (every row tagged with data_source: "your-platform"), machine-readable CSV, and available instantly. We do not lock in anyone's data. The door swings both ways.
This means: if a model imports their earnings from your platform into Indulgon, and later decides to leave Indulgon, they take your data with them. We never hold it hostage. This is core to how we operate, and it is the same standard we ask of our partners.
We are asking partner platforms to let models take their data out and bring it to Indulgon. In return, we give models the exact same ability to take their data out of Indulgon -- including any data that originally came from a partner platform. Data comes in easily, data goes out easily. No one gets trapped on any platform.
Think of it like a bank: you can move your money from Bank A to Bank B whenever you want. The bank does not get to keep your money because you opened an account there. Data portability works the same way. Earnings history, subscriber records, payout data -- these belong to the person who earned them, not to the platform that processed them.
When a user requests a data export from Indulgon, every record includes a data_source column:
data_source, date, amount, type
indulgon, 2026-05-15, 49.99, subscription
onlyfans, 2024-03-22, 9.99, subscription
sextpanther, 2025-11-01, 15.00, call
This lets users (and partner platforms) clearly see where each piece of data originated. Nothing is mixed, nothing is relabeled, nothing is hidden. The data retains its source identity permanently.
Questions? Apply for partnership and we will get you set up.