---
title: "Switch Project"
method: POST
path: "/api/v1/switch_project/{project_id}"
tags: ["Login"]
---

# Switch Project

`POST /api/v1/switch_project/{project_id}`

Switch project.

## Path parameters

- `project_id` string, required

## Headers

- `X-Openstack-Request-Id` string

## Response `200`

OK

- Profile
  - `keystone_token` string, required — Keystone token
  - `region` string, required — User region
  - `exp` integer, required — Token expiration time
  - `uuid` string, required — UUID
  - `project` Project, required
    - `id` string, required — Project ID
    - `name` string, required — Project name
    - `domain` Domain, required
      - `id` string, required — Domain ID
      - `name` string, required — Domain name
  - `user` User, required
    - `id` string, required — User ID
    - `name` string, required — User name
    - `domain` Domain, required
      - `id` string, required — Domain ID
      - `name` string, required — Domain name
  - `roles` Role[], required — User roles
    - `id` string, required — Role ID
    - `name` string, required — Role name
  - `keystone_token_exp` string, required — Keystone token expiration time
  - `base_domains` string[], nullable — User base domains
  - `endpoints` object, nullable — Keystone endpoints
  - `projects` object, nullable — User projects
  - `default_project_id` string, nullable — User default project ID
  - `version` string, required — Version
  - `regions` string[], nullable — Available regions for the user

## Other responses

- `401` — Unauthorized
- `422` — Validation Error

## Changes

- **2026-07-17** `4b7c0ce8c025` — 1 warning, 3 info
  - changed the pattern of the `header` request parameter `X-Openstack-Request-Id` from `^req-\w{8}(-\w{4}){3}-\w{12}` to `^$|^req-\w{8}(-\w{4}){3}-\w{12}`
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status
  - added the optional property `regions` to the response with the `200` status
- **2025-07-21** `69284996eaa6` — 6 breaking, 8 info
  - response property `base_domains` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `default_project_id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `endpoints` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `projects` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - …10 more
- **2025-06-24** `0c09cad5e8d9` — 1 breaking
  - response property `detail/items/loc/items/` list-of-types was widened by adding types `integer` to media type `application/json` of response `422`
- **2023-11-17** `ba10dfb2dc18` — 1 info
  - added the optional property `default_project_id` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/openstack/apis/skyline-api/changes/api/v1/switch_project/:project_id/post.md)

---

[API](https://skmtc.dev/openstack/apis/skyline-api.md) · [All operations](https://skmtc.dev/openstack/apis/skyline-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openstack/skyline-api/revisions/4b7c0ce8c025/schema)
