---
title: "Preview Language Partners"
method: GET
path: "/users/preview"
tags: ["users", "users"]
---

# Preview Language Partners

`GET /users/preview`

Public preview endpoint for onboarding flow - no authentication required.
Shows potential language partners: native speakers and fellow learners of the target language.
Prioritizes users with profile pictures and recent activity.

DELIBERATELY STILL PUBLIC: its only caller is /onboarding/preview/partners,
a pre-signup route (listed in App.jsx `publicRoutes`) that anonymous visitors
reach from the onboarding flow — requiring auth would break the funnel.

But it is now DE-IDENTIFIED. It used to publish, to anyone on the internet,
a language-filterable directory of real members: user id, username, full
name, photo, bio, location and last-active time. Cards now carry only a
first name, the language pair, and a rough last-active time — enough social
proof for the preview, not a scrapeable member list. The `id` is a random
per-response value (the page uses it only as a React key) so a card can't be
cross-referenced against /users/profile/{id} or any other endpoint.

## Query parameters

- `target_language` string, nullable — Filter by users who speak this language natively
- `limit` integer — Number of users to return (max 20 for preview)

## Response `200`

Successful Response

- UserDiscoveryResponse[]
  - `id` string, uuid, required
  - `username` string, required
  - `full_name` string, nullable, required
  - `profile_picture` string, nullable, required
  - `native_language` string, nullable, required
  - `native_languages` string[]
  - `target_languages` string[], required
  - `profile_data` object, required
  - `interests` string[]
  - `last_login_at` string, date-time, nullable
  - `average_rating` number, nullable
  - `review_count` integer
  - `is_friend` boolean
  - `friend_request_status` string, nullable
  - `account_type` string, nullable
  - `is_staff` boolean
  - `is_ai_persona` boolean
  - `school_name` string, nullable
  - `relationship_status` string, nullable
  - `has_booking_today` boolean
  - `starting_hourly_rate` number, nullable
  - `currency` string, nullable
  - `badge_count` integer

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored.md) · [All operations](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fluentea/aurqa-language-learning-platform-refactored/revisions/45cbba31aa7d/schema)
