---
title: "Update Logo"
method: POST
path: "/api/v1/workspaces/logo"
tags: ["Workspace"]
---

# Update Logo

`POST /api/v1/workspaces/logo`

Upload an image to be used as the workspace logo. Similar to a user’s
avatar. If `delete` is set to true, it removes the logo completely and does
not return any `logo_*` attribute.

## Response `200`

Successful Response

- WorkspaceSyncView — A class with fields representing a WorkspaceView which will be returned to clients in a sync (or sync-like) response. Always construct instances through `from_view()`: `__json__` serializes with `exclude_unset=True` so that fields `from_view()` deliberately leaves unset (member-only fields for non-members, `logo_*` fields for workspaces without a logo) are omitted from the response, exactly like the historical `WorkspaceView.__json__` output.
  - `id` string, required — String ID of the workspace.
  - `name` string, required — Workspace name.
  - `description` string, required — Workspace description.
  - `creator_id` string, required — String ID of the user who created the workspace.
  - `created_at` string, date-time, nullable, required — Date and time when the workspace was created.
  - `is_deleted` boolean, required — Whether the workspace is deleted.
  - `is_collapsed` boolean, required — Whether the workspace is collapsed in the user's sidebar.
  - `role` 'ADMIN' | 'MEMBER' | 'GUEST', required — Role of the user inside the workspace
  - `plan` 'STARTER' | 'BUSINESS', required — The plan the workspace is currently on
  - `pending_invitations` string[], required — Emails with a pending invitation to the workspace. Only populated for workspace members.
  - `is_link_sharing_enabled` boolean, nullable, required — Whether joining the workspace via a link is enabled. `null` for non-members.
  - `is_guest_allowed` boolean, required — Whether guests are allowed in the workspace.
  - `is_trial_pending` boolean, required — Whether the workspace is waiting for trial confirmation.
  - `invite_code` string, nullable, required — Opaque code to invite users to the workspace, or `null`.
  - `limits` WorkspaceLimitsSyncView, required — Current and next plan limits returned for a workspace in sync responses.
    - `current` WorkspacePlanLimitSettings, required
      - `plan_name` string, required
      - `max_projects` integer, required
      - `max_collaborators` integer, required
      - `upload_limit_mb` integer, required
      - `automatic_backups` boolean, required
      - `reminders` boolean, required
      - `reminders_at_due` boolean, required
      - `max_guests_per_workspace` integer, required
      - `max_folders_per_workspace` integer, required
      - `advanced_permissions` boolean, required
      - `durations` boolean, required
      - `calendar_layout` boolean
      - `email_forwarding` boolean
      - `email_ai_forwarding` boolean
      - `max_live_notifications` integer
      - `max_monthly_ramble` integer
      - `admin_tools` boolean
      - `security_controls` boolean
      - `max_filters` integer
      - `max_workspace_users` integer
      - `max_workspaces` integer
      - `max_workspace_templates` integer
      - `project_insights` boolean
    - `next` WorkspacePlanLimitSettings, required
      - `plan_name` string, required
      - `max_projects` integer, required
      - `max_collaborators` integer, required
      - `upload_limit_mb` integer, required
      - `automatic_backups` boolean, required
      - `reminders` boolean, required
      - `reminders_at_due` boolean, required
      - `max_guests_per_workspace` integer, required
      - `max_folders_per_workspace` integer, required
      - `advanced_permissions` boolean, required
      - `durations` boolean, required
      - `calendar_layout` boolean
      - `email_forwarding` boolean
      - `email_ai_forwarding` boolean
      - `max_live_notifications` integer
      - `max_monthly_ramble` integer
      - `admin_tools` boolean
      - `security_controls` boolean
      - `max_filters` integer
      - `max_workspace_users` integer
      - `max_workspaces` integer
      - `max_workspace_templates` integer
      - `project_insights` boolean
  - `current_member_count` integer, nullable, required — Number of members in the workspace. `null` for non-members.
  - `current_active_projects` integer, nullable, required — Number of active projects in the workspace. `null` for non-members.
  - `domain_name` string, nullable, required — Email domain associated with the workspace, or `null`.
  - `domain_discovery` boolean, required — Whether users with a matching email domain can discover the workspace.
  - `restrict_email_domains` boolean, required — Whether membership is restricted to allowed email domains.
  - `admin_sorting_applied` boolean, required — Whether an admin has applied custom project sorting.
  - `user_sorting_applied` boolean, required — Whether the current user has sorted their workspace sidebar before.
  - `project_sort_preference` 'MANUAL' | 'A_TO_Z' | 'Z_TO_A', required — User preference for workspace project sorting
  - `default_collaborators` DefaultCollaboratorsSyncView, required — Client representation of default collaborators within a workspace. Split into 2 lists rather than using the polymorphic original WorkspaceDefaultCollaboratorView.
    - `user_ids` integer[]
    - `predefined_group_ids` string[]
  - `properties` object, required — Additional workspace properties.
  - `logo_s640` string, nullable — URL of the workspace logo (640px).
  - `logo_big` string, nullable — URL of the workspace logo (195px).
  - `logo_medium` string, nullable — URL of the workspace logo (60px).
  - `logo_small` string, nullable — URL of the workspace logo (35px).
  - `current_template_count` integer, nullable — Number of active templates in the workspace. Only returned for workspace members.
  - `pending_invites_by_type` object, nullable — Number of pending invitations by workspace role. Only returned for workspace members.
  - `member_count_by_type` object, nullable — Number of members by workspace role. Only returned for workspace members.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

---

[API](https://skmtc.net/todoist/apis/todoist-api.md) · [All operations](https://skmtc.net/todoist/apis/todoist-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/todoist/todoist-api/revisions/69a962f1578f/schema)
