---
title: "Get a user profile by public handle"
method: GET
path: "/users/handle"
tags: ["Public", "Users"]
---

# Get a user profile by public handle

`GET /users/handle`

## Request

- Base URL: `https://api.purplegrain.com/api/v1`
- URL: `https://api.purplegrain.com/api/v1/users/handle`
- Auth: none declared

Retrieve one existing user's profile using the handle from their public PurpleGrain profile address. Returns their name, about text, avatar URLs and contact or account fields visible to the caller. Use include to expand services or place and location details. Returns not found for an unknown handle. This lookup does not change the profile or contact the user.

## Query parameters

- `handle` string, required
- `include` string

## Response `200`

Successful. When the `include` query parameter is used, the response may contain an `included` array (JSON:API) or inlined related resources (application/json).

- UsersShowResponseAttributes
  - `data` UserModelAttributes: User in attributes-adapter shape (Accept application/json); fields at top level.
    - `id` string
    - `type` string
    - `email` string, email
    - `name` string, nullable
    - `about` string, nullable
    - `account_mode` 'grower' | 'contractor', nullable: Grower vs Contractor mode; only present for the current user.
    - `default_record_mode` 'ai' | 'general': Which record type the composer opens on: `ai` (PurpleGrain AI, the default) or `general`. Only present for the current user. A null value is ignored on update.
    - `free_trial_used` boolean, nullable: Whether the free trial has been used. Only populated when viewing your own profile; null otherwise.
    - `mobile` string, nullable: Canonical login mobile (E.164); only present for the current user.
    - `mobile_verified` boolean, nullable: Whether the mobile has been verified by SMS one-time code; only present for the current user.
    - `sms_opted_out` boolean, nullable: Whether SMS to this account is silenced (by replying STOP, or from the account screen); only present for the current user.
    - `handle` string
    - `url` string
    - `avatar_url` string, nullable
    - `avatar_thumb_url` string, nullable
    - `updated_at` string, date-time
    - `created_at` string, date-time
    - `contact_info` object
      - `mobile` string, nullable
      - `phone` string, nullable
      - `facebook` string, nullable
      - `url` string, nullable
      - `email` boolean, nullable
    - `city` object: Inlined when include=city
    - `place` object: Inlined when include=place
    - `services` unknown[], nullable: Inlined when include=services
      - unknown
    - `location` object: Inlined when include=location

## Other responses

- `404`: Not Found

---

[API](https://skmtc.dev/purplegrain/apis/purple-grain-api.md) · [All operations](https://skmtc.dev/purplegrain/apis/purple-grain-api/llms.txt) · [OpenAPI document](https://skmtc.dev/purplegrain/apis/purple-grain-api/revisions/4bedbc1c784c?raw)
