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

# Login

`POST /v1/portal/login`

## Request

- Base URL: `https://api.grafomem.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.grafomem.com/v1/portal/login`
- Auth: none declared

Authenticate with email and password, receive JWT.

## Request body

- LoginRequest: Portal login payload.
  - `email` string, required
  - `password` string, required

## Response `200`

Successful Response

- TokenResponse: Returned after successful signup or login. ``api_key`` is present only on the show-once signup response. A login response carries no key (no plaintext is stored; hash-at-rest): the field is null and the client provisions one via /v1/portal/api-keys or /rotate-key.
  - `token` string, required
  - `tenant_id` string, required
  - `name` string, required
  - `email` string, required
  - `api_key` string, nullable
  - `plan` string, required

## Other responses

- `422`: Validation Error

---

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