---
title: "Remove a widget's launcher image or favicon"
description: "Go back to the launcher's icon, or to the favicon drawn from the widget's colour and icon."
canonical: "https://lookio.app/docs/api/widgets/delete-widget-image"
updated: "2026-10-28"
---

# Remove a widget's launcher image or favicon

Requires `assistants:write`.

`kind` is `launcher` or `favicon`. The image and its file are removed: the launcher shows its icon again, and the hosted page a favicon drawn from the widget's colour and icon. The widget comes back. Removing an image that is not set is not an error. It costs no credits.

To set one, see [Set a widget's launcher image or favicon](/docs/api/widgets/set-widget-image).

```http
DELETE https://api.lookio.app/v1/widgets/{widget_id}/images/{kind}
```

## Authorizations

- `Authorization` (bearer, in header, required)

## Path parameters

- `widget_id` (`string`, required, pattern: `^wdg_[abcdefghjkmnpqrstuvwxyz23456789]{12}$`)
- `kind` (`enum<string>`, required, one of: `launcher, header, favicon`)

## Response

**200**: Remove a widget's launcher image or favicon

- `data` (`object`, required)
- `data.id` (`string`, required, pattern: `^wdg_[abcdefghjkmnpqrstuvwxyz23456789]{12}$`)
- `data.name` (`string`, required)
- `data.assistant_id` (`string`, required)
- `data.assistant_name` (`string,null`, required): Null when the assistant was deleted: the widget answers nothing until you point it at another.
- `data.mode` (`enum<string>`, required, one of: `eco, flash, deep`)
- `data.status` (`enum<string>`, required, one of: `live, paused`): `live` answers visitors; `paused` shows nothing and answers nothing, until set live again.
- `data.allowed_domains` (`string[]`, required)
- `data.settings` (`object`, required)
- `data.settings.theme` (`enum<string>`, required, default: `auto`, one of: `light, dark, auto`): `light`, `dark`, or `auto` to follow the visitor's system.
- `data.settings.accent` (`string`, required, default: `#4F46E5`, pattern: `^#[0-9a-fA-F]{6}$`): The brand colour of the launcher and the buttons, as `#RRGGBB`.
- `data.settings.radius` (`enum<string>`, required, default: `medium`, one of: `none, small, medium, large`): How round the corners are: `none`, `small`, `medium` or `large`.
- `data.settings.bubbles` (`enum<string>`, required, default: `corners`, one of: `corners, round`): The shape of the visitor's message bubbles and the suggestion chips: `corners` (default) follows `radius`, `round` makes them fully round whatever the corners are. Omit it to leave it as it is.
- `data.settings.position` (`enum<string>`, required, default: `bottom-right`, one of: `bottom-right, bottom-left`): Which corner of the page the bubble sits in: `bottom-right` or `bottom-left`.
- `data.settings.launcher` (`enum<string>`, required, default: `bubble`, one of: `bubble, pill, bar`): `bubble`: a round button in a corner. `pill`: a button with `launcher_label`. `bar`: a bar centered at the bottom of the page, showing the `placeholder`, that opens the chat in the middle of the screen (`position` does not apply).
- `data.settings.launcher_label` (`string`, required, default: `Ask AI`, length: `≤ 40 chars`): The text of the pill launcher, up to 40 characters.
- `data.settings.launcher_icon` (`enum<string>`, required, default: `chat`, one of: `chat, message, help, sparkles, bot, search, book, bulb, bolt, heart, star, support`): The launcher's icon: `chat` (default), `message`, `help`, `sparkles`, `bot`, `search`, `book`, `bulb`, `bolt`, `heart`, `star` or `support`.
- `data.settings.launcher_size` (`enum<string>`, required, default: `medium`, one of: `small, medium, large`): The launcher's size, whatever its style: `small`, `medium` (default) or `large`.
- `data.settings.bar_icon` (`boolean`, required, default: `true`): The `bar` launcher: show the icon at its start (default). Off: a plain field.
- `data.settings.bar_translucent` (`boolean`, required, default: `false`): The `bar` launcher: see-through, with the page blurred behind it. Off (default): a solid bar.
- `data.settings.launcher_image` (`string | null`, required, default: `null`): Paid plans, read-only: the name of the image shown in place of the launcher's icon, set with `PUT /v1/widgets/{id}/images/launcher` or in the app. Null: the icon.
- `data.settings.favicon` (`string | null`, required, default: `null`): Paid plans, read-only: the name of the hosted page's favicon, set with `PUT /v1/widgets/{id}/images/favicon` or in the app. Null: a favicon drawn from the widget's colour and icon.
- `data.settings.header_icon` (`enum<string>`, required, default: `sparkles`, one of: `chat, message, help, sparkles, bot, search, book, bulb, bolt, heart, star, support, none`): The avatar in the chat's header, apart from the launcher's icon: `sparkles` (default), `chat`, `message`, `help`, `bot`, `search`, `book`, `bulb`, `bolt`, `heart`, `star` or `support`; `none` shows no avatar at all.
- `data.settings.header_image` (`string | null`, required, default: `null`): Paid plans, read-only: the name of the image shown in place of the icon in the chat's header, set with `PUT /v1/widgets/{id}/images/header` or in the app. Null: the header icon.
- `data.settings.title` (`string`, required, default: `""`, length: `≤ 60 chars`): The chat's title, up to 60 characters. Empty means the assistant's name.
- `data.settings.subtitle` (`string`, required, default: `""`, length: `≤ 80 chars`): A line under the chat's title, up to 80 characters, like `Available 24/7`. Empty (default): none, and the title sits centered alone. Omit it to leave it as it is.
- `data.settings.greeting` (`string`, required, default: `Hi! Ask me anything, I answer from our documentation.`, length: `≤ 500 chars`): The first message the visitor sees, up to 500 characters.
- `data.settings.placeholder` (`string`, required, default: `Ask a question…`, length: `≤ 80 chars`): The hint in the question box, up to 80 characters.
- `data.settings.suggestions` (`string[]`, required, default: `[]`, items: `≤ 4 items`): Up to 4 example questions (120 characters each) shown before the first question.
- `data.settings.disclaimer` (`string`, required, default: `AI answers can be wrong.`, length: `≤ 200 chars`): The small print under the chat, up to 200 characters. Empty hides it.
- `data.settings.language` (`enum<string>`, required, default: `auto`, one of: `auto, en, fr, de, es, it, pt`): The language of the widget's own words (buttons, notices): `auto` follows the visitor, or `en`, `fr`, `de`, `es`, `it`, `pt`. Answers always follow the visitor's language.
- `data.settings.sources` (`enum<string>`, required, default: `numbered`, one of: `numbered, numbered_no_links, inline_links, none`): How answers show their sources: `numbered` ([1] markers and a source list with links to web pages), `numbered_no_links` (the same without any address), `inline_links` (the answer links its own words to the source pages, no list; describe the style in the assistant's context) or `none`.
- `data.settings.memory` (`boolean`, required, default: `true`): Follow-up questions see the conversation so far.
- `data.settings.visitor_history` (`boolean`, required, default: `true`): Visitors find their past chats when they come back on the same browser (a random id kept in the chat frame's own storage). Off: nothing is kept in the browser and every visit starts fresh.
- `data.settings.feedback` (`boolean`, required, default: `true`): Thumbs up and down under each answer, with an optional word on what was wrong after a thumbs down. Read them in the workspace's logs: `GET /v1/logs/conversations?widget_id=…&rating=down` lists the conversations where visitors were not satisfied.
- `data.settings.branding` (`boolean`, required, default: `true`): Show "Powered by Lookio". Only paid plans may turn it off.
- `data.settings.bubble` (`boolean`, required, default: `true`): The chat bubble format: a launcher in a corner of the page that opens the chat. On by default. Off: the loader draws nothing.
- `data.settings.embed` (`boolean`, required, default: `false`): The in-page format: the chat inside a container of your page (`snippets.embed`, or `snippets.iframe`). Off by default; off, the frame answers 404.
- `data.settings.hosted_page` (`boolean`, required, default: `false`): The hosted page format: a full-page chat at `snippets.hosted`, to link to. Off by default; off, the page answers 404.
- `data.limits` (`object`, required)
- `data.limits.monthly_credits_enabled` (`boolean`, required, default: `false`)
- `data.limits.per_visitor_hour` (`integer`, required, default: `40`, range: `1–500`): Questions one visitor may ask per hour, 1 to 500.
- `data.limits.per_visitor_day` (`integer`, required, default: `150`, range: `1–2000`): Questions one visitor may ask per day, 1 to 2,000, and not fewer than the hourly limit.
- `data.limits.monthly_credits` (`integer | null`, required, default: `null`): Credits the widget may spend per calendar month (UTC), 10 to 10,000,000. Null: no ceiling beyond the workspace's balance. When it is reached the widget stops answering until the month turns.
- `data.snippets` (`object`, required)
- `data.snippets.bubble` (`string`, required): A `<script>` tag: a launcher in a corner of the page opens the chat. Paste it before `</body>`.
- `data.snippets.embed` (`string`, required): A `<div>` and the script: the chat fills the div, where you put it. Give the div a height.
- `data.snippets.hosted` (`string`, required): A link to a full-page chat. Needs no website; can be turned off with `settings.hosted_page`.
- `data.snippets.iframe` (`string`, required): A raw `<iframe>` for builders that refuse scripts (Notion, some CMS).
- `data.stats` (`object`, required): This calendar month, UTC.
- `data.stats.conversations` (`integer`, required)
- `data.stats.answers` (`integer`, required)
- `data.stats.credits` (`integer`, required)
- `data.created_via` (`string,null`, required)
- `data.created_at` (`string`, required)
- `data.updated_at` (`string`, required)
- `request_id` (`string`, required)

```json
{
  "data": {
    "id": "wdg_xpatjpwt22fu",
    "name": "Docs chat",
    "assistant_id": "ast_66xcnwtzj8vt",
    "assistant_name": "Support",
    "mode": "flash",
    "status": "live",
    "allowed_domains": [
      "docs.acme.com"
    ],
    "settings": {
      "theme": "auto",
      "accent": "#4F46E5",
      "radius": "medium",
      "bubbles": "corners",
      "position": "bottom-right",
      "launcher": "bubble",
      "launcher_label": "Ask AI",
      "title": "",
      "greeting": "Hi! Ask me anything, I answer from our documentation.",
      "placeholder": "Ask a question…",
      "suggestions": [],
      "disclaimer": "AI answers can be wrong.",
      "language": "auto",
      "sources": "numbered",
      "memory": true,
      "visitor_history": true,
      "feedback": true,
      "branding": true,
      "hosted_page": true
    },
    "limits": {
      "per_visitor_hour": 40,
      "per_visitor_day": 150,
      "monthly_credits": null
    },
    "snippets": {
      "bubble": "<script src=\"https://widget.lookio.app/v1/widget.js\" data-lookio-widget=\"wdg_j36h6kb8tyng\" async></script>",
      "embed": "<div data-lookio-embed=\"wdg_j36h6kb8tyng\" style=\"height: 600px\"></div>\n<script src=\"https://widget.lookio.app/v1/widget.js\" async></script>",
      "hosted": "https://widget.lookio.app/w/wdg_j36h6kb8tyng",
      "iframe": "<iframe src=\"https://widget.lookio.app/w/wdg_j36h6kb8tyng?embed=1\" style=\"width: 100%; height: 600px; border: 0\" title=\"Chat\"></iframe>"
    },
    "stats": {
      "conversations": 12,
      "answers": 31,
      "credits": 930
    },
    "created_via": "api",
    "created_at": "2026-10-12T09:30:00.000Z",
    "updated_at": "2026-10-12T09:30:00.000Z"
  },
  "request_id": "req_01K9X7M2Q4"
}
```

**400**: Possible codes: invalid_request, unknown_field, invalid_parameter, invalid_cursor

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**401**: Possible codes: authentication_required, invalid_api_key, api_key_expired, api_key_revoked, invalid_access_key

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**403**: Possible codes: insufficient_scope, feature_not_available, admin_required, permission_denied

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**404**: Possible codes: resource_not_found

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**429**: Possible codes: rate_limited

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**500**: Possible codes: internal_error

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**Example request**

```bash
curl --request DELETE \
  --url 'https://api.lookio.app/v1/widgets/<widget_id>/images/<kind>' \
  --header 'Authorization: <api-key>'
```
