> ## Documentation Index
> Fetch the complete documentation index at: https://docs.truthlocks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Public portfolio

> Showcase your protected content on a public profile page with a shareable URL.

Your public portfolio is a profile page that displays all your protections with visibility set to "public." Anyone can view it without signing in, making it a shareable showcase of your verified work.

## Portfolio URL

Your portfolio is available at:

```text theme={null}
https://verify.truthlocks.com/portfolio/{username}
```

The page displays your name, username, total number of protected items, and a grid of public protections. Each card links to the full proof page where visitors can verify authenticity.

<Info>
  Portfolio pages include OpenGraph metadata, so sharing your portfolio URL on
  social media or messaging apps generates a rich preview with your name and
  protection count.
</Info>

## Claiming a username

Your username determines your portfolio URL. Usernames are globally unique — once claimed, no other account can use it.

<Steps>
  <Step title="Go to your profile">
    Open **Profile** in the sidebar on the [verify portal](https://verify.truthlocks.com).
  </Step>

  <Step title="Enter a username">
    Type the username you want. Usernames must be 3–30 characters, lowercase alphanumeric, and may include hyphens or underscores. No spaces or special characters.
  </Step>

  <Step title="Claim it">
    Click **Claim username**. If the name is available, it is assigned to your account immediately and your portfolio goes live.
  </Step>
</Steps>

You can also claim a username through the API:

```bash theme={null}
curl -X PUT https://api.truthlocks.com/v1/consumer/me/username \
  -H "X-API-Key: tlk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"username": "jdoe"}'
```

```json Response theme={null}
{
  "status": "updated",
  "username": "jdoe"
}
```

Your portfolio is then live at `https://verify.truthlocks.com/portfolio/jdoe`.

<Warning>
  Usernames cannot be changed after claiming. Choose carefully.
</Warning>

## Set up your portfolio

<Steps>
  <Step title="Protect content">
    Protect at least one piece of content using the [Protect page](/guides/content-protection)
    or the API.
  </Step>

  <Step title="Claim a username">
    Claim a unique username from your **Profile** page to activate your portfolio URL.
  </Step>

  <Step title="Set visibility to public">
    When protecting content, choose **Public (Portfolio)** as the visibility
    option. You can also toggle existing protections to public from your
    **Protections** list.
  </Step>

  <Step title="Set your display name">
    Go to **Profile** in the sidebar and add your display name. This appears on
    your portfolio page alongside your username.
  </Step>
</Steps>

## Managing visibility

Each protection can be either **private** (default) or **public**. Only public protections appear on your portfolio.

To toggle visibility on an existing protection:

1. Go to **Protections** in your dashboard.
2. Click the visibility badge (labeled "private" or "public") on any protection.
3. The change takes effect immediately.

You can also update visibility through the API:

```bash theme={null}
curl -X PUT https://api.truthlocks.com/v1/consumer/protections/{id}/visibility \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"visibility": "public"}'
```

<Tip>
  Your dashboard shows a **Public** stat card with the number of protections
  currently in your portfolio.
</Tip>

## Fetch a portfolio via the API

Retrieve any user's public portfolio programmatically. No authentication is required:

```bash theme={null}
curl https://api.truthlocks.com/v1/consumer/portfolio/{username}
```

```json Response theme={null}
{
  "username": "jdoe",
  "name": "Jane Doe",
  "total_protections": 12,
  "protections": [
    {
      "attestation_id": "b2c3d4e5-...",
      "title": "Sunset at Big Sur",
      "description": "Landscape photograph taken at Pfeiffer Beach",
      "category": "photography",
      "created_at": "2026-03-20T14:30:00Z",
      "verify_url": "https://verify.truthlocks.com/proof/b2c3d4e5-..."
    }
  ]
}
```

## Next steps

<CardGroup cols={2}>
  <Card title="Embeddable badges" icon="certificate" href="/guides/badges">
    Add verification badges to your website or README.
  </Card>

  <Card title="Content protection" icon="lock" href="/guides/content-protection">
    Full guide to protecting your content.
  </Card>

  <Card title="Consumer portal" icon="table-columns" href="/guides/consumer-portal">
    Manage your inbox, protections, and settings.
  </Card>
</CardGroup>
