For the complete documentation index, see llms.txt. This page is also available as Markdown.

Admin

Administrative endpoints requiring bearer token authentication

Grant credits to user (Admin)

post
/users/{address}/credits

Grants credits to a user on an admin's behalf. Requires signed fetch from an address in READ_WRITE_ADMIN_ADDRESSES; that address is recorded as the granter.

Two shapes:

  • goal: the season goal reward, as a signed MANA credit.

  • on-demand: credits Shop credits (1 credit = 10 cents) written to the USD balance. Nothing is signed, the credits do not expire, and the grant counts against a service-wide daily ceiling for USD grants. Refused while Shop USD credits are disabled, while no ceiling is configured, for wallets flagged for multi-accounting, and to the granting admin's own wallet.

On-demand MANA grants are retired: a body with amount, a MANA denomination or an expiresAt is a 400. An explicit null in any optional field is treated as omitted. credits, amount, denomination and expiresAt are refused on goal grants. In GET /credits, these grants carry credit_source = grant (filter with source=grant), have no MANA amount, and are left out by min_amount/max_amount.

Authorizations
AuthorizationstringRequired

Signed fetch authentication using @dcl/platform-crypto-middleware (ADR-44l). Requires auth chain headers (x-identity, x-signature, x-timestamp) for signature validation. See http://adr.decentraland.org/adr/ADR-44l for details.

Path parameters
addressstringRequired

User's Ethereum address

Example: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbPattern: ^0x[a-fA-F0-9]{40}$
Body
or
Responses
201

Credits granted successfully

application/json
or
post/users/{address}/credits
POST /users/{address}/credits HTTP/1.1
Host: credits.decentraland.org
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 58

{
  "type": "on-demand",
  "credits": 250,
  "reason": "Event winner"
}
{
  "signature": "text",
  "expiresAt": 1,
  "season": null,
  "seasonId": null,
  "creditId": "text"
}

Restart user program (Admin, Non-Production)

post
/restart-program

Restarts a user's progress in the current season. Only available in non-production environments. Requires bearer token authentication with API_ADMIN_TOKEN.

Authorizations
AuthorizationstringRequired

Bearer token authentication for administrative endpoints. Use API_ADMIN_TOKEN for most admin endpoints or PROGRAMMATIC_API_ADMIN_TOKEN for /flag endpoint.

Body
addressstringRequired

User's Ethereum address

Pattern: ^0x[a-fA-F0-9]{40}$
Responses
200

Program restarted successfully

application/json
okbooleanOptional
post/restart-program
POST /restart-program HTTP/1.1
Host: credits.decentraland.org
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55

{
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}
{
  "ok": true
}

Test email sending (Admin, Non-Production)

post
/test-email

Sends a test email to verify email notification functionality. Only available in non-production environments. Requires bearer token authentication with API_ADMIN_TOKEN.

Authorizations
AuthorizationstringRequired

Bearer token authentication for administrative endpoints. Use API_ADMIN_TOKEN for most admin endpoints or PROGRAMMATIC_API_ADMIN_TOKEN for /flag endpoint.

Body
addressstringRequired

User's Ethereum address to send test email to

Pattern: ^0x[a-fA-F0-9]{40}$
Responses
200

Test email sent successfully

application/json
okbooleanOptional
post/test-email
POST /test-email HTTP/1.1
Host: credits.decentraland.org
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "address": "text"
}
{
  "ok": true
}

Flag users for multi-accounting (Programmatic Admin)

post
/flag

Flags one or more users for multi-accounting detection or blacklisted addresses. This endpoint is designed for programmatic use by external systems. Requires bearer token authentication with PROGRAMMATIC_API_ADMIN_TOKEN.

Authorizations
AuthorizationstringRequired

Bearer token authentication for administrative endpoints. Use API_ADMIN_TOKEN for most admin endpoints or PROGRAMMATIC_API_ADMIN_TOKEN for /flag endpoint.

Body
ipstringRequired

IP address associated with the flagged users

addressesLinkedstring[]Required

List of Ethereum addresses linked to the same IP

sourcestring · enumOptional

Source of the flagging detection

Possible values:
Responses
200

Users flagged successfully

application/json
okbooleanOptional
post/flag
POST /flag HTTP/1.1
Host: credits.decentraland.org
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 71

{
  "ip": "text",
  "addressesLinked": [
    "text"
  ],
  "source": "ip_multi_accounting"
}
{
  "ok": true
}

Unflag users (Admin)

post
/unflag

Removes flags from users for captcha or multi-account violations. Requires bearer token authentication with API_ADMIN_TOKEN.

Authorizations
AuthorizationstringRequired

Bearer token authentication for administrative endpoints. Use API_ADMIN_TOKEN for most admin endpoints or PROGRAMMATIC_API_ADMIN_TOKEN for /flag endpoint.

Body
addressesstring[]Required

List of Ethereum addresses to unflag

cacheTypestring · enumRequired

Type of flag to remove

Possible values:
Responses
200

Users unflagged successfully

application/json
okbooleanOptional
post/unflag
POST /unflag HTTP/1.1
Host: credits.decentraland.org
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 87

{
  "addresses": [
    "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
  ],
  "cacheType": "multi-account"
}
{
  "ok": true
}

Get flagged wallets (Admin)

get
/admin/flagged-wallets

Retrieves all flagged wallets with their flagging details including timestamps, reasons, and associated IP addresses. Provides summary statistics. Requires bearer token authentication with API_ADMIN_TOKEN.

Authorizations
AuthorizationstringRequired

Bearer token authentication for administrative endpoints. Use API_ADMIN_TOKEN for most admin endpoints or PROGRAMMATIC_API_ADMIN_TOKEN for /flag endpoint.

Responses
200

Flagged wallets retrieved successfully

application/json
totalCountnumberRequired

Total number of flagged wallets

get/admin/flagged-wallets
GET /admin/flagged-wallets HTTP/1.1
Host: credits.decentraland.org
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "flaggedWallets": [
    {
      "address": "text",
      "flagType": "captcha",
      "flaggedAt": "2026-01-01T00:00:00.000Z",
      "reason": {
        "message": "text",
        "ip": "text",
        "linkedAddresses": [
          "text"
        ]
      },
      "attempts": 1
    }
  ],
  "totalCount": 1,
  "metadata": {
    "captchaFlags": 1,
    "multiAccountFlags": 1,
    "retrievedAt": "2026-01-01T00:00:00.000Z"
  }
}

Trigger reminder emails (Admin)

post
/trigger-emails

Manually triggers reminder email sending for users based on time window. Requires bearer token authentication with API_ADMIN_TOKEN.

Authorizations
AuthorizationstringRequired

Bearer token authentication for administrative endpoints. Use API_ADMIN_TOKEN for most admin endpoints or PROGRAMMATIC_API_ADMIN_TOKEN for /flag endpoint.

Body
daystring · enumOptional

Optional day of week filter

Possible values:
dateTimestring · enumRequired

Time window for sending emails

Possible values:
Responses
200

Emails triggered successfully

application/json
okbooleanOptional
post/trigger-emails
POST /trigger-emails HTTP/1.1
Host: credits.decentraland.org
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 37

{
  "day": "friday",
  "dateTime": "evening"
}
{
  "ok": true
}

Last updated