---
title: "Load a community user profile with packages and recent activity."
method: GET
path: "/v1/community/profile"
tags: ["community"]
---

# Load a community user profile with packages and recent activity.

`GET /v1/community/profile`

## Request

- Base URL: `https://api.kody.codes`
- URL: `https://api.kody.codes/v1/community/profile`
- Auth: HTTP bearer

Load a community user profile with packages and recent activity. Omit username to load your own profile (includes a private profile and private, hidden, or unpublished packages). Other users see only public packages. Private profiles of other users return user_found false without leaking existence.

Org permission: `org:read`.

## Query parameters

- `username` string: Username to load. Omit to load the authenticated caller’s own profile.

## Response `200`

Success.

- object
  - `user_found` boolean, required
  - `profile` object, nullable, required
    - `username` string, required
    - `display_name` string, required
    - `bio` string, nullable, required
    - `avatar_url` string, nullable, required
    - `visibility` 'public' | 'private', required
    - `joined_at` string, required
    - `public_package_count` integer, required
    - `listing_count` integer, required
  - `packages` object[], required
    - `package_id` string
    - `name` string, required
    - `kody_id` string, required
    - `description` string, required
    - `tags` string[], required
    - `updated_at` string, required: Last time the owner edited the saved package. Independent of what is published to the community.
    - `community_listing_id` string, nullable, required
    - `community_published_at` string, nullable, required: Last time the package was published to its catalog entry, or null when it has no active listing.
    - `needs_republish` boolean, required: True when the active catalog entry pin is behind the package published commit. False when there is no listing, or the pin matches. Do not derive this from updated_at versus published_at.
    - `hidden` boolean: Present only on the caller’s own profile. Hidden packages stay off ranked search.
    - `is_private` boolean: Present only on the caller’s own profile. Repo visibility (`saved_packages.is_private`), not package.json#private.
  - `recent_activity` object[], required
    - `type` 'listing_published' | 'listing_updated' | 'listing_forked', required
    - `actor_username` string, required
    - `actor_display_name` string, required
    - `actor_avatar_url` string, nullable, required
    - `listing_id` string, required
    - `listing_name` string, required
    - `listing_kody_id` string, required
    - `created_at` string, required
    - `public_url` string, required: Canonical shareable user URL ({base}/@{username}/{package-name-leaf}); share this URL with humans.

## Other responses

- `400`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `401`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `403`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `404`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `409`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `413`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `429`: Too many requests (edge IP/token limit) or an entitlement / plan-cap limit. Wait at least `Retry-After` seconds before retrying.
- `500`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `503`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `default`: Error envelope `{ "error": { "code", "message", "details"? } }`.

---

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