---
title: "Generate JWT URL"
method: POST
path: "/uploadposts/users/generate-jwt"
tags: ["Authentication"]
---

# Generate JWT URL

`POST /uploadposts/users/generate-jwt`

Generate a secure, single-use URL containing a JWT. Users visit this URL to link their social media accounts. The JWT is valid for 48 hours.

## Request body

- object
  - `username` string, required — The user profile identifier for which the JWT is generated.
  - `redirect_url` string, uri — URL to redirect to after linking social accounts.
  - `logo_image` string, uri — URL to a logo image for branding the linking page.
  - `redirect_button_text` string — Text for the redirect button after linking.
  - `connect_title` string — Custom title for the connection page.
  - `connect_description` string — Custom description for the connection page.
  - `platforms` string[] — Platforms to show for connection. Defaults to all supported platforms.
  - `show_calendar` boolean — Whether to show the calendar view on the connection page.
  - `language` 'en' | 'es' | 'de' | 'fr' | 'pt' | 'pl' | 'tr' — Forces the connection page language for this profile. When omitted, the page auto-detects the visitor's browser language and falls back to English.
  - `ui_labels` object, nullable — Flat object of connect-page i18n dot-path keys mapped to replacement strings, for white-label text overrides beyond connect_title/connect_description/redirect_button_text. Max 100 entries; keys must match ^[a-zA-Z0-9_.]+$; values must be strings of at most 300 characters. Omitting the field leaves previously stored labels untouched; sending null or {} clears them. Returned inside the profile object by GET /uploadposts/users/validate-jwt. Keys refer to the connect page's own translation keys, so only override keys you have confirmed exist.

## Response `200`

JWT URL generated successfully.

- object
  - `success` boolean
  - `access_url` string — Secure URL for the user to visit and link accounts.
  - `duration` string — JWT validity period.

## Other responses

- `400` — Bad Request — Missing or invalid parameters.
- `401` — Unauthorized — Invalid or expired token.
- `404` — Not Found — Resource does not exist.

## Changes

- **2026-07-31** `10bd964e4415` — 3 info
  - added the new optional request property `ui_labels`
  - added the new `pl` enum value to the request property `language`
  - added the new `tr` enum value to the request property `language`

[Change history](https://skmtc.dev/upload-post/apis/upload-post-api/changes/uploadposts/users/generate-jwt/post.md)

---

[API](https://skmtc.dev/upload-post/apis/upload-post-api.md) · [All operations](https://skmtc.dev/upload-post/apis/upload-post-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/upload-post/upload-post-api/revisions/10bd964e4415/schema)
