Get your API keys
Sign up at futuur.com and generate your keys from your account settings. You receive two keys:- Public key — included in every request as the
Keyheader. Safe to log. - Private key — used to sign requests. Never share or log this value.
Required headers
Every authenticated request must include these three headers:| Header | Value |
|---|---|
Key | Your public key |
Timestamp | Current Unix timestamp (seconds since epoch) |
HMAC | SHA-512 hexdigest of the signed parameter string |
Signing process
Collect parameters to sign
Gather all request parameters — query string parameters for GET requests, body parameters for POST requests — plus
Key (your public key) and Timestamp (current Unix timestamp as an integer).Sort alphabetically by key name
Sort all parameters (including
Key and Timestamp) alphabetically by their key name. For example: Key, Timestamp, category sorts to Key, Timestamp, category — but if you have amount, it would come before Key.URL-encode the sorted parameters
Join the sorted key-value pairs as a URL-encoded query string, for example:
Sign with your private key
Compute an HMAC-SHA512 digest using your private key as the secret and the URL-encoded string as the message. Use the hex digest (not base64).
Code examples
GET vs. POST requests
- GET requests: include all query string parameters in the parameter set you sign (in addition to
KeyandTimestamp). - POST requests: include all body parameters in the parameter set you sign. Do not mix query and body parameters.
Common errors
| Error | Cause |
|---|---|
InvalidHMACKey | The public key in the Key header is not recognized. Check for typos or use the wrong key. |
InvalidHMACSignature | The computed signature does not match. Common causes: wrong sort order, missing parameters in the signed set, encoding mismatch, or using the wrong private key. |
MissingTimestamp | The Timestamp header is absent or malformed. |
ExpiredTimestamp | The timestamp is too far from the server’s current time. Ensure your system clock is synchronized (NTP). |