Skip to content

Get Is Whitelisted

Check if a wallet address is whitelisted to place orders on the platform. This is a public endpoint that returns whether a specific wallet address has trading permissions.

Endpoint

POST https://papi.synthetix.io/v1/info

Request

Request Format

{
  "params": {
    "action": "getIsWhitelisted",
    "walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0"
  }
}

Request Parameters

ParameterTypeRequiredDescription
params.actionstringYesMust be "getIsWhitelisted"
params.walletAddressstringYesEthereum wallet address to check (hex format, e.g., "0x742d35...")

Example Request

cURL

curl -X POST https://papi.synthetix.io/v1/info \
  -H "Content-Type: application/json" \
  -d '{
    "params": {
      "action": "getIsWhitelisted",
      "walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0"
    }
  }'

JavaScript

const response = await fetch('https://papi.synthetix.io/v1/info', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    params: {
      action: 'getIsWhitelisted',
      walletAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0'
    }
  })
});
 
const data = await response.json();
console.log(data);

Python

import requests
 
response = requests.post('https://papi.synthetix.io/v1/info',
    json={
        "params": {
            "action": "getIsWhitelisted",
            "walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0"
        }
    }
)
 
data = response.json()
print(data)

Response

Success Response

{
  "status": "ok",
  "response": true,
  "request_id": "5ccf215d37e3ae6d"
}

Response Format

The response contains a boolean value:

  • true - Wallet is whitelisted and can place orders
  • false - Wallet is not whitelisted and cannot place orders

Response Object

FieldTypeDescription
responsebooleantrue if wallet is whitelisted, false otherwise

Validation Rules

  • walletAddress must be provided and not empty
  • walletAddress must not exceed 42 characters
  • walletAddress must be a valid Ethereum hex address format (0x followed by 40 hexadecimal characters)
  • Address format is case-insensitive (normalized to lowercase internally)
  • No authentication required

Error Handling

Common error scenarios:

Error CodeDescriptionRetryable
UNAUTHORIZEDEIP-712 signature validation failedNo
VALIDATION_ERRORRequest validation failedNo
MISSING_REQUIRED_FIELDRequired field is missingNo
INVALID_FORMATField format is invalidNo
INVALID_VALUEInvalid parameter valueNo
RATE_LIMIT_EXCEEDEDToo many requests in time windowYes
INSUFFICIENT_MARGINNot enough margin for tradeNo
ORDER_NOT_FOUNDOrder does not existNo
OPERATION_TIMEOUTOperation timed outYes

Endpoint-Specific Errors

ErrorDescription
Invalid request bodyMissing or empty walletAddress parameter
walletAddress exceeds maximum length of 42 characterswalletAddress string is longer than the maximum of 42 characters
Invalid wallet address formatAddress is not a valid Ethereum hex address
Whitelist arbitrator unavailableInternal service error, retry request
Failed to obtain whitelist arbitrationTemporary service issue, retry request

Error Response Examples

Invalid Wallet Address

{
  "status": "error",
  "error": {
    "message": "Invalid wallet address format",
    "code": "VALIDATION_ERROR"
  },
  "request_id": "5ccf215d37e3ae6d"
}

Missing Parameter

{
  "status": "error",
  "error": {
    "message": "Invalid request body",
    "code": "INVALID_FORMAT"
  },
  "request_id": "5ccf215d37e3ae6d"
}

Use Cases

Pre-Trading Validation

// Check if user is whitelisted before allowing trading UI access
async function checkTradingAccess(walletAddress) {
  const response = await fetch('https://papi.synthetix.io/v1/info', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      params: {
        action: 'getIsWhitelisted',
        walletAddress: walletAddress
      }
    })
  });
 
  const data = await response.json();
 
  if (data.status === 'ok' && data.response === true) {
    console.log('User has trading access');
    return true;
  } else {
    console.log('User needs to complete whitelist process');
    return false;
  }
}

Bulk Whitelist Check

// Check multiple wallets at once
async function checkMultipleWallets(walletAddresses) {
  const results = await Promise.all(
    walletAddresses.map(async (address) => {
      const response = await getIsWhitelisted(address);
      return {
        address,
        isWhitelisted: response.response
      };
    })
  );
 
  return results;
}

Access Control

// Gate trading features based on whitelist status
if (await isWhitelisted(userWallet)) {
  // Show trading interface
  enableTradingFeatures();
} else {
  // Show whitelist application flow
  showWhitelistApplication();
}

Understanding Whitelisting

What is Whitelisting?

Whitelisting is an access control mechanism that determines which wallet addresses are permitted to place orders on the platform. This helps ensure:

  • Regulatory compliance
  • Risk management
  • Platform security
  • User verification requirements

Getting Whitelisted

If a wallet is not whitelisted, users typically need to:

  1. Complete KYC/verification requirements
  2. Meet platform criteria
  3. Apply through the official whitelist process
  4. Wait for approval

Contact platform support or check the main website for whitelist application procedures.

:::info Rate Limits The Synthetix API enforces rate limits to ensure fair usage and system stability:

  • Order Placement: 100 orders per second per subaccount
  • WebSocket Connections: 100 connections per IP address
  • WebSocket Subscriptions: 1000 subscriptions per IP address

See Rate Limits for detailed information and best practices. :::

Related Endpoints