Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.polynode.dev/llms.txt

Use this file to discover all available pages before exploring further.

The Polymarket Profiles API is a secure username provisioning flow for apps that manage their own users and wallets. Use it when your user has an EOA wallet and you want to let them set up a Polymarket username without sending private keys or long-lived Polymarket credentials to PolyNode.

Base URL

https://api.polynode.dev

Authentication

Every request requires a paid PolyNode API key.
curl "https://api.polynode.dev/v3/polymarket/profiles/username-available?username=alice123" \
  -H "x-api-key: pn_live_..."
Your backend should call these endpoints. Do not expose your API key to browser clients.

Endpoints

MethodEndpointDescription
GET/v3/polymarket/profiles/username-availableCheck whether a username is available
POST/v3/polymarket/profiles/username/challengeCreate the two wallet-signing payloads
POST/v3/polymarket/profiles/username/completeSubmit signatures and create or change the username
GET/v3/polymarket/profiles/{address}Read public profile state

Flow

  1. Check the username.
  2. Create a challenge for {address, username, action}.
  3. User signs the Polymarket SIWE message with personal_sign.
  4. User signs the PolyNode consent typed data with eth_signTypedData_v4.
  5. Complete the action from your backend.
See the Polymarket Profile Setup guide for a complete frontend and backend integration.

Error shape

{
  "error": "challenge_mismatch",
  "message": "challenge fields do not match completion request"
}
Common error codes:
CodeMeaning
invalid_addressInvalid EVM address
invalid_usernameUsername failed local validation
username_takenUsername is unavailable
challenge_not_foundChallenge expired, already consumed, or missing
challenge_expiredChallenge is older than 10 minutes
challenge_mismatchChallenge fields or API key do not match
signature_invalidWallet signature did not recover to the requested EOA
polymarket_compliance_blockedPolymarket rejected the action for compliance or eligibility reasons
upstream_unavailablePolymarket, Gamma, or Polygon RPC failed
rate_limitedProfile-specific rate limit exceeded