Required headers
string
required
The vendor username tied to your API secret.
string
required
The Base64-encoded HMAC-SHA256 signature of the request. See
Generating the signature.
string
required
The time the request is sent, in ISO 8601 UTC format
(e.g.
2024-03-05T17:52:11.345Z). This must match the value used when
generating the signature.string
Must be
application/json for JSON requests, or multipart/form-data for
file uploads.string
The Base64-encoded request body. Required for
POST and PUT requests.Generating the signature
The signature is computed as:StringToSign differs by method.
string
The request timestamp in ISO 8601 format. Must match the
x-date header.string
The HTTP method in uppercase (
GET, POST, PUT, DELETE).string
The request path and query string after the domain — for example,
/api/v1/users?phone_number=+15551234567.string
The Base64 encoding of the request body. The JSON keys must be sorted
alphabetically and all whitespace and newlines removed before encoding.
Step by step
1
Retrieve your secret
Load the
API_SECRET issued to you by Sotto.2
Capture the timestamp
Generate the current time in ISO 8601 UTC format and use it for both the
signature and the
x-date header.3
Encode the body
For
POST/PUT, sort the JSON keys alphabetically, strip whitespace, and
Base64-encode the result to produce x-digest.4
Build the string to sign
Assemble the
StringToSign using the timestamp, method, path with query,
and (for POST/PUT) the Base64 body.5
Sign and send
Compute the HMAC-SHA256 signature with your secret, then send the request
with the
x-bigco-hmac-username, x-bigco-hmac-sha256, x-date, and
(for POST/PUT) x-digest headers.Example
401 Unauthorized: