MassPay wallet activation
Whether the payee has activated the MassPay wallet and, if not, a fresh `activationUrl` to send them to.
/api/external/payouts/masspay/activationNewWhether the payee has activated the MassPay wallet and, if not, a fresh activationUrl to send them to.
The payee opens it once in a browser; MassPay refuses payouts to the wallet until then. The link expires, so fetch it right before you show it, and never store it. Once activated, activated stays true. The link signs the payee in: the key's own account only.
At launch this endpoint answers 403 first_party_only to every other app. The read endpoints of this group are open to every key.
Authentication
Send the creator's API key as a bearer token: Authorization: Bearer dpfn_…. See Authentication & API keys.
Responses
| Name | Type | Description |
|---|---|---|
provisioned | boolean | True when the account has a MassPay payee. |
activated | boolean | True once the payee finished activation. |
activationUrl | string | null | The activation link while not activated; null otherwise. Format: uri |
{
"provisioned": true,
"activated": false,
"activationUrl": "https://payee.masspay.io/activate/…"
}Errors
| Status | Body | When |
|---|---|---|
| 401 | {"error":"Unauthorized","code":"unauthorized"} | Missing or invalid API key. |
| 403 | {"error":"Payout methods need the account’s own key — a key an agency minted for a managed account cannot read or change where payouts go.","code":"agency_key_not_allowed"} | The key was minted by an agency for an account it manages. |
| 403 | {"error":"This endpoint is only available to Dropfans-operated integrations.","code":"first_party_only"} | During launch, payout-method endpoints are open to Dropfans-operated integrations only. |
| 502 | {"error":"MassPay request failed","code":"masspay_unavailable","provisioned":true,"activated":false,"activationUrl":null} | MassPay did not answer (503 when unreachable). Retry. |
| 400 | {"error":"This endpoint only acts as the key’s own account — send it without X-Dropfans-Account.","code":"account_header_not_allowed"} | `X-Dropfans-Account` names another account. An agency can never change where a creator it manages is paid. |
Rate limiting
Every response carries the X-RateLimit-Tier header and, on limited tiers, the per-minute and per-day trios — read X-RateLimit-Remaining and X-RateLimit-Reset instead of hardcoding limits. Details in Rate limits.
Code samples
curl "https://www.dropfans.io/api/external/payouts/masspay/activation" \
-H "Authorization: Bearer $DROPFANS_API_KEY"const res = await fetch(`https://www.dropfans.io/api/external/payouts/masspay/activation`, {
headers: {
Authorization: `Bearer ${process.env.DROPFANS_API_KEY}`,
},
});
console.log(await res.json());import os
import requests
res = requests.get(
"https://www.dropfans.io/api/external/payouts/masspay/activation",
headers={"Authorization": f"Bearer {os.environ['DROPFANS_API_KEY']}"},
)
print(res.json())Questions? [email protected]
