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 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:

ErrorDescription
Invalid signatureEIP-712 signature validation failed
Invalid market symbolMarket symbol not recognized
Nonce already usedNonce must be greater than previous value
Rate limit exceededToo many requests in time window
Request expiredexpiresAfter timestamp has passed

Endpoint-Specific Errors

ErrorDescription
Invalid request bodyMissing or empty walletAddress parameter
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