---
title: "Authorize User"
method: POST
path: "/api/v1/authorize"
tags: ["User"]
---

# Authorize User

`POST /api/v1/authorize`

## Request

- Base URL: `https://api.ekiden.fi`
- URL: `https://api.ekiden.fi/api/v1/authorize`
- Auth: none declared
- TypeScript: <https://skmtc.dev/ekidenfi/apis/ekiden-gateway/docs/api/v1/authorize/post.ts> (a function with typed inputs; its response is checked against the schema)

Authorize and obtain an access token

## Request body

- AuthorizeRequest
  - `full_message` string, nullable: Optional Aptos Wallet Standard full message (APTOS-prefixed, newline-delimited). If provided, the backend will verify the signature against this exact string and also validate that it contains `message: AUTHORIZE|{timestamp_ms}|{nonce}` and a matching `nonce:`. Example: APTOS\nmessage: AUTHORIZE|1731541800000|b7d1c2e8f5a94f3db2f8c6a9d1e4\nnonce: b7d1c2e8f5a94f3db2f8c6a9d1e4
  - `id_token` string, nullable: Optional Auth0/OIDC `id_token` (RS256) for hosted Canton party auth.
  - `nonce` string, required: Example: b7d1c2e8f5a94f3db2f8c6a9d1e4
  - `party_id` string, nullable: Optional Canton party id (`<hint>::<fingerprint>`) for Console (CIP-103) auth.
  - `public_key` string, required: Ed25519 public key as hex (`0x` optional) or standard base64. Example: 0xa9d81da788977638194c857b918f12ff2233c7a86e82b44705761b2d02426f6d
  - `signature` string, required: Ed25519 signature as hex (`0x` optional) or standard base64. Canton Console: signs `EKIDEN-CANTON-AUTHORIZE|{party_id}|{timestamp_ms}|{nonce}`. Example: 0xf5ec808e52d014f5193eccf680acf84c6256bdddb0159088e7cb18d74b9c590b92eb4381e10307fccc0868612993dfb9a542257aab22d7a3decfda33045fb905
  - `timestamp_ms` integer, required: Example: 1731541800000

## Response `200`

Successfully authorized and token generated

- AuthorizeResponse
  - `token` string, required
  - `user_id` string, uuid, required

## Changes

- **2026-09-10** `fad9eecaba2e`: 2 info
  - added the new optional request property `id_token`
  - added the new optional request property `party_id`
- **2026-01-29** `16fe50636aa5`: 6 info
  - api tag `User` added
  - api tag `Auth` removed
  - added the new optional request property `full_message`
  - removed the non-success response with the status `400`
  - …2 more
- **2025-09-19** `002ab4ca56bd`: 2 breaking
  - added the new required request property `nonce`
  - added the new required request property `timestamp_ms`
- **2025-05-13** `d896251ce982`: 2 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `500`
- **2025-05-12** `ac88209c5dc1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/changes/api/v1/authorize/post.md)

---

[API](https://skmtc.dev/ekidenfi/apis/ekiden-gateway.md) - [All operations](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/revisions/fad9eecaba2e?raw)
