meta.apiKey value you must include in the X-MSS-API-USERKEY header on all subsequent requests. This is the entry point for every integration: call it once to obtain the key, then use that key to sign all other requests.
Request
GET /authenticate/apikeyexchange
Headers
Must be
application/json.Your API Application Key.
Send an empty string for the initial exchange. This value is also excluded from the HMAC canonical message during the initial exchange.
Current UTC timestamp in RFC 7231 format, e.g.
Mon, 06 Apr 2026 00:22:19 GMT.HMAC-SHA256 signature of the canonical request message, Base64-encoded. See Signing requests for how to build the canonical message.
Query Parameters
The user’s Portal.io email address. Maximum 256 characters.
The user’s Portal.io password.
For the initial exchange,
X-MSS-API-USERKEY must be an empty string and is excluded from the HMAC canonical message. The canonical message is: [HTTP method][base URL without query params][timestamp] — no content-type (GET request) and no user key. See the signing guide for a worked example.Response
200 Success
Unique identifier of the authenticated user.
Session identifier for this authentication session.
The user’s email address / login name.
The user’s display name.
A bearer token for session-based authentication. For the HMAC-based public API, use
meta.apiKey instead.Token that can be used to refresh the session.
ISO 8601 expiry timestamp for the refresh token.
URL of the user’s profile.
List of roles assigned to the user.
List of permissions granted to the user.
Authentication provider used for this session.
The User API Key to use for all subsequent HMAC-authenticated requests. Pass this value in the
X-MSS-API-USERKEY header and include it when building HMAC signatures.Error Codes
| Code | Meaning |
|---|---|
| 401 | Invalid credentials or the user’s email address has not been verified. |