---
title: "Login"
method: POST
path: "/api/v1/login"
tags: ["Login"]
---

# Login

`POST /api/v1/login`

Login & get user profile.

## Headers

- `X-Openstack-Request-Id` string

## Request body

- Credential
  - `region` string, nullable — Credential identity service region
  - `domain` string, nullable — Credential user domain
  - `username` string, required — Credential username
  - `password` string, required — Credential password for user

## 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

> 14 revisions in range; 1 could not be searched.

- **2025-07-21** `69284996eaa6` — 6 breaking, 9 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`
  - …11 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`
- **2024-08-21** `88263973e5a5` — 1 info
  - the request property `region` became optional
- **2023-11-17** `ba10dfb2dc18` — 1 info
  - added the optional property `default_project_id` to the response with the `200` status
- **2022-08-19** `033c8fe2fe57` — 13 breaking, 5 warning, 7 info
  - the request property `domain` became required
  - the request property `region` became required
  - request property `domain` list-of-types was narrowed by removing types `null` from media type `application/json`
  - request property `region` list-of-types was narrowed by removing types `null` from media type `application/json`
  - …21 more

[Change history](https://skmtc.dev/openstack/apis/skyline-api/changes/api/v1/login/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)
