# Google Lens Image Search

Search public webpages for visually similar images from an image URL and return filtered image results with source citations.

ID: task:web_image_search_v1 · Region: global · Status: unavailable

catalog_version: b824d955fad4da88e5cc3c9cedb03d9bf32bc2264bd9b7dfcbc9ceffc2ea5995
updated_at: 2026-10-23T06:58:57.750330+00:00

Search public webpages for visually similar images from an image URL and return filtered image results with source citations.

Dataset releases define historical periods; live reads describe request-time data and do not guarantee completeness.

Docs: https://docs.kleardata.ai/capabilities/task%3Aweb_image_search_v1

## POST /v1/search

legacy · unavailable · api_key, oauth

REST requires a customer API Key; MCP requires an enabled authenticated server; CLI requires its published artifact and command.

仅支持公网图片 URL；不接受 base64、asset_id、文本 query 或 hybrid 模式。
该来源不分页，也不接受 page、page_size 或 page_token；每次调用返回上游当前可用的图片结果。
上游不提供相似度分数时 similarity 返回 null；只返回审核后的图片、来源 URL 和引用字段。

3 Credits per successful search page.

Where the request declares idempotency_key, reuse it for the same operation; metadata GET is read-only.

A pending response supplies a result/status reference. Read it first; do not automatically resubmit paid execution after a timeout or ambiguous result. Correct 401/403/422 errors before retrying.

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {
      "additionalProperties": false,
      "description": "Common filter names with source-specific values checked after parsing.\n\n``sort`` stays a bounded string here because ``SearchSourceDefinition``\nowns each provider's vocabulary.",
      "properties": {
        "locale": {
          "enum": [
            "en-US",
            "ja-JP",
            "zh-CN"
          ]
        }
      },
      "required": [],
      "type": "object"
    },
    "Schema2": {
      "additionalProperties": false,
      "description": "Exactly one public image reference accepted by the Search API.",
      "properties": {
        "asset_id": {
          "anyOf": [
            {
              "maxLength": 128,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "base64": {
          "anyOf": [
            {
              "maxLength": 8388608,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "url": {
          "anyOf": [
            {
              "maxLength": 2048,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "type": "object"
    }
  },
  "additionalProperties": false,
  "description": "Public request shape shared by text, image, and hybrid sources.",
  "properties": {
    "filters": {
      "$ref": "#/$defs/Schema1"
    },
    "image": {
      "anyOf": [
        {
          "$ref": "#/$defs/Schema2"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "max_credits": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "search_mode": {
      "enum": [
        "image"
      ]
    },
    "source": {
      "const": "web_image"
    },
    "task_query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional task attribution: when provided, write one concise, self-contained task_query in the user's language and reuse that exact value in every call for the task, including discovery, search, approval retry, results, export, and status checks. For MCP calls, when omitted, Asklear records a generic non-user-specific attribution so compatible clients can still call the tool. REST calls may omit it and remain unattributed. It is a task description, not a task identifier. Do not include hidden reasoning, credentials, or direct personal identifiers such as phone numbers, email addresses, identity numbers, or street addresses.",
      "maxLength": 300
    }
  },
  "required": [
    "source",
    "image",
    "search_mode"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "filters": {},
  "image": {
    "url": "https://example.com/search-image.jpg"
  },
  "search_mode": "image",
  "source": "web_image"
}
```

### Synthetic response / 合成响应

```json
{
  "data": {
    "items": [],
    "pagination": {
      "has_more": false
    }
  }
}
```

- data.items (array<object>): No field description available
- data.items[].entity_id (string): No field description available
- data.items[].snippet (string): No field description available
- data.items[].title (string): No field description available
- data.items[].url (string): No field description available
- data.pagination.has_more (boolean): No field description available

Follow up: GET /v1/search/{job_id}
Read a pending search and its public results.

