3. Technical Integration Issues

Rate limiting, request signatures, error handling, testing environments, and support channels.

How do I handle a 429 Too Many Requests error?

You've exceeded the rate limit. In the short term, wait until the time in the X-RATELIMIT-RESET header, then retry. Longer term: reduce your call frequency, cache data that doesn't change often, and use WebSocket instead of polling for real-time data.

How is the request signature calculated for trading APIs?

Mutating commands (place/amend/cancel orders) require an X-Signature header — an RSA+SHA256 signature computed over the request body using the API Key's SecretKey, per UBCKNN's regulation on trading data integrity. See the Authentication documentation for the exact parameters and a signing example.

What does an error response look like, and how should I handle it consistently?

REST error responses look like { "code": ..., "msg": ... }; WebSocket API error responses look like { "id", "status", "error": { "code", "message" } }. We recommend standardizing how your application maps code to a concrete action — see the full error table in the Error Code Reference appendix.

How can I test my integration without affecting real accounts or data?

Use the UAT environment — connection details are provided after registering on the Developer Portal, with an API Key set that's completely separate from Production.

I have an issue I can't resolve myself — who do I contact?

When reporting an issue, please include: the endpoint/method called, the request body (with sensitive data redacted), the response body (including code/msg), the time it occurred, and a brief description of the problem — this helps our support team resolve it faster.