---
title: "SSO Token Exchange"
method: POST
path: "/v1/auth/sso-exchange"
tags: ["Auth: SSO"]
---

# SSO Token Exchange

`POST /v1/auth/sso-exchange`

## Request

- Base URL: `https://api.robosystems.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.robosystems.ai/v1/auth/sso-exchange`
- Auth: none declared

Step 2 of 3. Exchanges the SSO token for a short-lived session ID. Avoids passing tokens in redirect URLs.

## Request body

- SSOExchangeRequest: SSO token exchange request model.
  - `token` string, required: Temporary SSO token
  - `target_app` string, required: Target application identifier
  - `return_url` string, nullable: Optional return URL after authentication

## Response `200`

Successful Response

- SSOExchangeResponse: SSO token exchange response model.
  - `session_id` string, required: Temporary session ID for secure handoff
  - `redirect_url` string, required: URL to redirect to for authentication
  - `expires_at` string, date-time, required: Session expiration time

## Other responses

- `400`: Invalid request
- `422`: Validation Error
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/robosystems/apis/robosystems-api.md) · [All operations](https://skmtc.dev/robosystems/apis/robosystems-api/llms.txt) · [OpenAPI document](https://skmtc.dev/robosystems/apis/robosystems-api/revisions/e661e2d5ca6a?raw)
