ProfileService
Update Profile
Update the caller's mutable profile fields. Omitted fields are unchanged; present empty strings clear optional text fields.
Request
curl --request PATCH \ \
--url 'https://api.testnet.polyester.com/v1/auth/profile' \
--header 'Accept: */*' \
--header 'X-API-KEY-ID: YOUR_API_KEY_ID' \
--header 'X-API-TIMESTAMP: YOUR_API_TIMESTAMP' \
--header 'X-API-SIGNATURE: YOUR_API_SIGNATURE' \
--header 'Content-Type: application/json' \
--data '{
"avatarUrl": "https://placehold.co/128x128.png",
"bio": "Professional crypto trader and liquidity provider.",
"twitter": "@polyester_exchange",
"username": "trader_alpha",
"website": "https://example.com"
}'Responses
{
"avatarUrl": "https://placehold.co/128x128.png",
"bio": "Professional crypto trader and liquidity provider.",
"createdAt": "2025-01-01T00:00:00Z",
"currentTermsAccepted": false,
"discord": "polyester_trader",
"discordVerified": false,
"nextUsernameChangeAt": "2025-01-01T00:00:00Z",
"twitter": "@polyester_exchange",
"twitterVerified": false,
"username": "trader_alpha",
"usernameUnlocked": false,
"vipTier": 1,
"website": "https://example.com"
}Avatar URL. Use an empty string to clear it. Non-empty values must be valid http(s) URLs up to 256 characters. avatar_url.valid_url_or_empty // avatar_url must be empty or a valid http(s) URL
Short public bio. Use an empty string to clear it. Non-empty values must be at most 256 characters and cannot contain "<" or ">". bio.safe_or_empty // bio must be empty or <= 256 characters and must not contain '<' or '>'
X/Twitter handle without "@". Use an empty string to clear it. Non-empty values must be 1 to 15 letters, digits, or underscores. twitter.valid_handle_or_empty // twitter must be empty or a valid handle (letters, digits, underscore; without '@')
Public username for the root account. Use an empty string to clear it. Non-empty values must be 3 to 32 letters, digits, underscores, dots, or hyphens. username.valid_or_empty // username must be empty or 3-32 chars of letters, digits, underscore, dot, hyphen
Public website URL. Use an empty string to clear it. Non-empty values must be valid http(s) URLs up to 256 characters. website.valid_url_or_empty // website must be empty or a valid http(s) URL
Public username for the root account. Usernames are unique case-insensitively and use 3 to 32 letters, digits, underscores, dots, or hyphens. Empty means no username is set.
trader_alphaShort public bio. Maximum length is 256 characters.
Professional crypto trader and liquidity provider.Public website URL, if set. Maximum length is 256 characters.
https://example.comX/Twitter handle without "@". Maximum length is 15 characters.
@polyester_exchangeWhether the X/Twitter handle for this account has been verified.
falseDiscord handle or username without "@". Maximum length is 64 characters.
polyester_traderWhether the Discord handle for this account has been verified.
falseAvatar URL, if set. Maximum length is 256 characters.
https://placehold.co/128x128.pngAccount creation time in UTC. This is the canonical "member since" timestamp.
2025-01-01T00:00:00ZNext time in UTC when the username can be changed again. Omitted when no cooldown applies.
2025-01-01T00:00:00ZCurrent VIP tier for this root account. A value of 0 is the base tier. Read-only.
1Whether this account is currently allowed to claim/change a username.
falseWhether the caller's root account accepted the terms required for restricted actions. False when the required terms have not been accepted.
false| Key | Status | Error | When |
|---|---|---|---|
| unauthenticated | 401 | Unauthenticated | Authentication required. |
| permission-denied | 403 | Permission Denied | Permission denied. |
| invalid-argument | 400 | Invalid Argument | Invalid argument. |
| not-found | 404 | Not Found | Not found. |
| unavailable | 503 | Unavailable | Service unavailable. |