---
title: "Remove the caller's profile photo"
method: DELETE
path: "/api/membership/profile/photo"
tags: ["membership"]
---

# Remove the caller's profile photo

`DELETE /api/membership/profile/photo`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/membership/profile/photo`
- Auth: one of:
  - API key in cookie `__session`
  - HTTP bearer

Clerk session, or agt_ token with `membership:write` (live tier re-checked). Clears the photo and leaves the rest of the profile untouched. Idempotent: a caller with no photo gets `had_photo: false` and a 200, and no `profile` is echoed because nothing was written.

## Response `200`

Photo removed, or there was none.

- MemberPhotoDeleteResponse
  - `ok` boolean, required
  - `had_photo` boolean, required: False when there was nothing to remove.
  - `profile` MemberProfile
    - `clerk_user_id` string, required
    - `first_name` string
    - `photo_data_url` string: Set through /api/membership/profile/photo, not this route.
    - `company_website` string: Normalized to an absolute URL on save.
    - `company_logo_url` string: Derived from company_website; not settable directly.
    - `public_visible` boolean, required: Whether the member appears on the public members wall.
    - `ring` string, required: Snapshot of the member's tier at the last save — public | ft-member | ai-floor | ic-member | operator.
    - `updated_at` string, date-time, required

## Other responses

- `401`: No auth.
- `403`: Scope/tier not authorized.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
