Create portal session
Changed onCreate a portal session for an end user and get the URL to redirect them to.
The URL carries a single-use exchange code valid for 15 minutes, which the portal redeems exactly once for a 24-hour access token via portal.exchangeCode.
Required Permissions
Authorization runs in two stages, and both must pass.
First, your root key must have one of the following permissions:
- portal.*.create_portal_session (to mint sessions for any portal in the workspace)
- portal.<portal_id>.create_portal_session (to mint sessions for a specific portal)
Second, a session can never carry a capability your root key does not itself hold. Each requested scope additionally requires the equivalent permission on every keyspace the portal resolves to:
- keys:read requires api.<api_id>.read_key and api.<api_id>.read_api
- keys:reroll requires api.<api_id>.create_key, plus api.<api_id>.encrypt_key when the keyspace stores encrypted keys
- analytics:read requires api.<api_id>.read_analytics
The * form of each is also accepted. Requesting a scope you do not hold returns 403 for the whole request rather than minting a reduced session, so a missing grant is visible instead of surfacing later as a broken portal.
Missing the portal permission itself returns 404 when your root key cannot read the portal or its sessions, so a caller who cannot see a portal is not told whether it exists. A root key that can read the portal but lacks the permission gets 403.
Your root key must also be associated with a workspace that has an enabled portal.
Request
- Base URLhttps://api.unkey.com
- URLhttps://api.unkey.com/v2/portal.createSession
- AuthHTTP bearer
Request body
Example request
{
"portal": "proj_1234abcd",
"externalId": "user_123",
"scopes": [
"keys:read",
"keys:reroll"
],
"returnUrl": "https://app.example.com/settings/api-keys"
}Response
Session created successfully. Redirect the end user to the returned URL.
Example response
{
"meta": {
"requestId": "req_123"
},
"data": {
"id": "ps_abc123def456",
"url": "https://portal.unkey.com/?code=pec_abc123def456"
}
}Changes
- info
added the non-success response with the status
- info
- warning
removed the request property
- warning