# 搜索文章

按关键词搜索微信公众号文章，使用当前支持的排序和时间范围契约。要取某篇文章的完整内容用 wechat_mp_article_detail_v1；要取公众号历史文章列表用 wechat_mp_account_articles_v1。

ID: task:wechat_search_articles_v2 · Region: cn · Status: unknown

catalog_version: 5c920c774a55e44d7e8c709143b88a18b8b2afcef91a5d19a8c9ae5d565d9077
updated_at: 2026-10-21T12:06:16.523771+00:00

缓存资料；当前可用状态待核实。

微信公众号

历史数据以数据集发布版本定义覆盖周期；实时读取反映请求时资料，不保证覆盖全部记录。

Docs: https://docs.asklear.cn/capabilities/task%3Awechat_search_articles_v2

## GET /v1/collections/tasks/wechat_search_articles_v2

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。



执行遵循现有计价；读取公开说明不扣 Credits。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "properties": {
    "task_code": {
      "const": "wechat_search_articles_v2"
    },
    "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": [
    "task_code"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "examples": [
    {
      "filters": {},
      "page": 1,
      "query": "示例关键词",
      "search_mode": "text",
      "source": "wechat"
    }
  ],
  "input_schema": {
    "$defs": {
      "SearchImageInput": {
        "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": "Provider-neutral input persisted for one asynchronous search job.",
    "properties": {
      "filters": {
        "additionalProperties": true,
        "type": "object"
      },
      "image": {
        "anyOf": [
          {
            "$ref": "#/$defs/SearchImageInput"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "page": {
        "default": 1,
        "maximum": 50,
        "minimum": 1,
        "type": "integer"
      },
      "page_size": {
        "anyOf": [
          {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "page_token": {
        "default": "",
        "maxLength": 8192,
        "type": "string"
      },
      "query": {
        "anyOf": [
          {
            "maxLength": 200,
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "search_mode": {
        "enum": [
          "text",
          "image",
          "hybrid"
        ],
        "type": "string"
      },
      "source": {
        "maxLength": 64,
        "minLength": 2,
        "type": "string"
      }
    },
    "required": [
      "source",
      "search_mode"
    ],
    "type": "object"
  }
}
```

- input_schema (object): 暂无字段说明
- examples (array<object>): 暂无字段说明
## describe_collection_task

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。



执行遵循现有计价；读取公开说明不扣 Credits。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "properties": {
    "task_code": {
      "const": "wechat_search_articles_v2"
    },
    "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": [
    "task_code"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "examples": [
    {
      "filters": {},
      "page": 1,
      "query": "示例关键词",
      "search_mode": "text",
      "source": "wechat"
    }
  ],
  "input_schema": {
    "$defs": {
      "SearchImageInput": {
        "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": "Provider-neutral input persisted for one asynchronous search job.",
    "properties": {
      "filters": {
        "additionalProperties": true,
        "type": "object"
      },
      "image": {
        "anyOf": [
          {
            "$ref": "#/$defs/SearchImageInput"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "page": {
        "default": 1,
        "maximum": 50,
        "minimum": 1,
        "type": "integer"
      },
      "page_size": {
        "anyOf": [
          {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "page_token": {
        "default": "",
        "maxLength": 8192,
        "type": "string"
      },
      "query": {
        "anyOf": [
          {
            "maxLength": 200,
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "search_mode": {
        "enum": [
          "text",
          "image",
          "hybrid"
        ],
        "type": "string"
      },
      "source": {
        "maxLength": 64,
        "minLength": 2,
        "type": "string"
      }
    },
    "required": [
      "source",
      "search_mode"
    ],
    "type": "object"
  }
}
```

- input_schema (object): 暂无字段说明
- examples (array<object>): 暂无字段说明
## asklear collection describe

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。



执行遵循现有计价；读取公开说明不扣 Credits。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "properties": {
    "task_code": {
      "const": "wechat_search_articles_v2"
    },
    "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": [
    "task_code"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "examples": [
    {
      "filters": {},
      "page": 1,
      "query": "示例关键词",
      "search_mode": "text",
      "source": "wechat"
    }
  ],
  "input_schema": {
    "$defs": {
      "SearchImageInput": {
        "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": "Provider-neutral input persisted for one asynchronous search job.",
    "properties": {
      "filters": {
        "additionalProperties": true,
        "type": "object"
      },
      "image": {
        "anyOf": [
          {
            "$ref": "#/$defs/SearchImageInput"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "page": {
        "default": 1,
        "maximum": 50,
        "minimum": 1,
        "type": "integer"
      },
      "page_size": {
        "anyOf": [
          {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "page_token": {
        "default": "",
        "maxLength": 8192,
        "type": "string"
      },
      "query": {
        "anyOf": [
          {
            "maxLength": 200,
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "search_mode": {
        "enum": [
          "text",
          "image",
          "hybrid"
        ],
        "type": "string"
      },
      "source": {
        "maxLength": 64,
        "minLength": 2,
        "type": "string"
      }
    },
    "required": [
      "source",
      "search_mode"
    ],
    "type": "object"
  }
}
```

- input_schema (object): 暂无字段说明
- examples (array<object>): 暂无字段说明
## POST /v1/collections/estimate

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

每个成功任务 3 Credits；启动前先估价。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {
      "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": "Outer transport contract; each registered task validates its own input.",
  "properties": {
    "input": {
      "additionalProperties": false,
      "description": "Provider-neutral input persisted for one asynchronous search job.",
      "properties": {
        "filters": {
          "additionalProperties": true,
          "type": "object"
        },
        "image": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema1"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page": {
          "default": 1,
          "maximum": 50,
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "anyOf": [
            {
              "maximum": 50,
              "minimum": 1,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page_token": {
          "default": "",
          "maxLength": 8192,
          "type": "string"
        },
        "query": {
          "anyOf": [
            {
              "maxLength": 200,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "search_mode": {
          "enum": [
            "text",
            "image",
            "hybrid"
          ],
          "type": "string"
        },
        "source": {
          "maxLength": 64,
          "minLength": 2,
          "type": "string"
        }
      },
      "required": [
        "source",
        "search_mode"
      ],
      "type": "object"
    },
    "task_code": {
      "const": "wechat_search_articles_v2"
    }
  },
  "required": [
    "task_code",
    "input"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "input": {
    "filters": {},
    "page": 1,
    "query": "示例关键词",
    "search_mode": "text",
    "source": "wechat"
  },
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "quote_token": "quote-token-from-estimate",
  "upper_bound_credits": 3
}
```

- quote_token (string): 暂无字段说明
- upper_bound_credits (integer): 暂无字段说明
## estimate_collection

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

每个成功任务 3 Credits；启动前先估价。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {
      "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": "Outer transport contract; each registered task validates its own input.",
  "properties": {
    "input": {
      "additionalProperties": false,
      "description": "Provider-neutral input persisted for one asynchronous search job.",
      "properties": {
        "filters": {
          "additionalProperties": true,
          "type": "object"
        },
        "image": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema1"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page": {
          "default": 1,
          "maximum": 50,
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "anyOf": [
            {
              "maximum": 50,
              "minimum": 1,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page_token": {
          "default": "",
          "maxLength": 8192,
          "type": "string"
        },
        "query": {
          "anyOf": [
            {
              "maxLength": 200,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "search_mode": {
          "enum": [
            "text",
            "image",
            "hybrid"
          ],
          "type": "string"
        },
        "source": {
          "maxLength": 64,
          "minLength": 2,
          "type": "string"
        }
      },
      "required": [
        "source",
        "search_mode"
      ],
      "type": "object"
    },
    "task_code": {
      "const": "wechat_search_articles_v2"
    },
    "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": [
    "task_code",
    "input"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "input": {
    "filters": {},
    "page": 1,
    "query": "示例关键词",
    "search_mode": "text",
    "source": "wechat"
  },
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "quote_token": "quote-token-from-estimate",
  "upper_bound_credits": 3
}
```

- quote_token (string): 暂无字段说明
- upper_bound_credits (integer): 暂无字段说明
## asklear collection estimate

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

每个成功任务 3 Credits；启动前先估价。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {
      "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": "Outer transport contract; each registered task validates its own input.",
  "properties": {
    "input": {
      "additionalProperties": false,
      "description": "Provider-neutral input persisted for one asynchronous search job.",
      "properties": {
        "filters": {
          "additionalProperties": true,
          "type": "object"
        },
        "image": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema1"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page": {
          "default": 1,
          "maximum": 50,
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "anyOf": [
            {
              "maximum": 50,
              "minimum": 1,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page_token": {
          "default": "",
          "maxLength": 8192,
          "type": "string"
        },
        "query": {
          "anyOf": [
            {
              "maxLength": 200,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "search_mode": {
          "enum": [
            "text",
            "image",
            "hybrid"
          ],
          "type": "string"
        },
        "source": {
          "maxLength": 64,
          "minLength": 2,
          "type": "string"
        }
      },
      "required": [
        "source",
        "search_mode"
      ],
      "type": "object"
    },
    "task_code": {
      "const": "wechat_search_articles_v2"
    },
    "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": [
    "task_code",
    "input"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "input": {
    "filters": {},
    "page": 1,
    "query": "示例关键词",
    "search_mode": "text",
    "source": "wechat"
  },
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "quote_token": "quote-token-from-estimate",
  "upper_bound_credits": 3
}
```

- quote_token (string): 暂无字段说明
- upper_bound_credits (integer): 暂无字段说明
## POST /v1/collections/jobs

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

每个成功任务 3 Credits；启动前先估价。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {
      "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,
  "properties": {
    "idempotency_key": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "input": {
      "additionalProperties": false,
      "description": "Provider-neutral input persisted for one asynchronous search job.",
      "properties": {
        "filters": {
          "additionalProperties": true,
          "type": "object"
        },
        "image": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema1"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page": {
          "default": 1,
          "maximum": 50,
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "anyOf": [
            {
              "maximum": 50,
              "minimum": 1,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page_token": {
          "default": "",
          "maxLength": 8192,
          "type": "string"
        },
        "query": {
          "anyOf": [
            {
              "maxLength": 200,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "search_mode": {
          "enum": [
            "text",
            "image",
            "hybrid"
          ],
          "type": "string"
        },
        "source": {
          "maxLength": 64,
          "minLength": 2,
          "type": "string"
        }
      },
      "required": [
        "source",
        "search_mode"
      ],
      "type": "object"
    },
    "max_credits": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "quote_token": {
      "maxLength": 4096,
      "minLength": 16,
      "type": "string"
    },
    "task_code": {
      "const": "wechat_search_articles_v2"
    }
  },
  "required": [
    "task_code",
    "input",
    "quote_token",
    "idempotency_key"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "idempotency_key": "directory-example",
  "input": {
    "filters": {},
    "page": 1,
    "query": "示例关键词",
    "search_mode": "text",
    "source": "wechat"
  },
  "quote_token": "quote-token-from-estimate",
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "job_id": "collection-example",
  "status": "queued"
}
```

- job_id (string): 暂无字段说明
- status (string): 暂无字段说明

Follow up: GET /v1/collections/jobs/{job_id}
Read job status and its saved public result.

## start_collection

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

每个成功任务 3 Credits；启动前先估价。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {
      "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,
  "properties": {
    "idempotency_key": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "input": {
      "additionalProperties": false,
      "description": "Provider-neutral input persisted for one asynchronous search job.",
      "properties": {
        "filters": {
          "additionalProperties": true,
          "type": "object"
        },
        "image": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema1"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page": {
          "default": 1,
          "maximum": 50,
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "anyOf": [
            {
              "maximum": 50,
              "minimum": 1,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page_token": {
          "default": "",
          "maxLength": 8192,
          "type": "string"
        },
        "query": {
          "anyOf": [
            {
              "maxLength": 200,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "search_mode": {
          "enum": [
            "text",
            "image",
            "hybrid"
          ],
          "type": "string"
        },
        "source": {
          "maxLength": 64,
          "minLength": 2,
          "type": "string"
        }
      },
      "required": [
        "source",
        "search_mode"
      ],
      "type": "object"
    },
    "max_credits": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "quote_token": {
      "maxLength": 4096,
      "minLength": 16,
      "type": "string"
    },
    "task_code": {
      "const": "wechat_search_articles_v2"
    },
    "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": [
    "task_code",
    "input",
    "quote_token",
    "idempotency_key"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "idempotency_key": "directory-example",
  "input": {
    "filters": {},
    "page": 1,
    "query": "示例关键词",
    "search_mode": "text",
    "source": "wechat"
  },
  "quote_token": "quote-token-from-estimate",
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "job_id": "collection-example",
  "status": "queued"
}
```

- job_id (string): 暂无字段说明
- status (string): 暂无字段说明

Follow up: GET /v1/collections/jobs/{job_id}
Read job status and its saved public result.

## asklear collection start

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

每个成功任务 3 Credits；启动前先估价。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {
      "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,
  "properties": {
    "idempotency_key": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "input": {
      "additionalProperties": false,
      "description": "Provider-neutral input persisted for one asynchronous search job.",
      "properties": {
        "filters": {
          "additionalProperties": true,
          "type": "object"
        },
        "image": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema1"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page": {
          "default": 1,
          "maximum": 50,
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "anyOf": [
            {
              "maximum": 50,
              "minimum": 1,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "page_token": {
          "default": "",
          "maxLength": 8192,
          "type": "string"
        },
        "query": {
          "anyOf": [
            {
              "maxLength": 200,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "search_mode": {
          "enum": [
            "text",
            "image",
            "hybrid"
          ],
          "type": "string"
        },
        "source": {
          "maxLength": 64,
          "minLength": 2,
          "type": "string"
        }
      },
      "required": [
        "source",
        "search_mode"
      ],
      "type": "object"
    },
    "max_credits": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "quote_token": {
      "maxLength": 4096,
      "minLength": 16,
      "type": "string"
    },
    "task_code": {
      "const": "wechat_search_articles_v2"
    },
    "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": [
    "task_code",
    "input",
    "quote_token",
    "idempotency_key"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "idempotency_key": "directory-example",
  "input": {
    "filters": {},
    "page": 1,
    "query": "示例关键词",
    "search_mode": "text",
    "source": "wechat"
  },
  "quote_token": "quote-token-from-estimate",
  "task_code": "wechat_search_articles_v2"
}
```

### Synthetic response / 合成响应

```json
{
  "job_id": "collection-example",
  "status": "queued"
}
```

- job_id (string): 暂无字段说明
- status (string): 暂无字段说明

Follow up: GET /v1/collections/jobs/{job_id}
Read job status and its saved public result.

## GET /v1/collections/jobs/{job_id}

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

执行遵循现有计价；读取公开说明不扣 Credits。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "properties": {
    "job_id": {
      "type": "string"
    },
    "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": [
    "job_id"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "job_id": "collection-example"
}
```

### Response schema / 响应契约

```json
{
  "$defs": {
    "Schema1": {
      "additionalProperties": false,
      "description": "The limited metadata safe to store and expose with a collection result.",
      "properties": {
        "api_name": {
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[\\x21-\\x7e]+$",
          "type": "string"
        },
        "credits_charged": {
          "maximum": 1000000,
          "minimum": 0,
          "type": "integer"
        },
        "latency_ms": {
          "maximum": 120000,
          "minimum": 0,
          "type": "integer"
        },
        "request_id": {
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[\\x21-\\x7e]+$",
          "type": "string"
        }
      },
      "required": [
        "request_id",
        "api_name",
        "latency_ms",
        "credits_charged"
      ],
      "type": "object"
    }
  },
  "additionalProperties": true,
  "properties": {
    "result": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "additionalProperties": true,
          "type": "object"
        },
        "meta": {
          "$ref": "#/$defs/Schema1"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object"
    }
  },
  "type": "object"
}
```

### Synthetic response / 合成响应

```json
{
  "result": {
    "data": {},
    "meta": {
      "api_name": "https://www.linkedin.com/in/example",
      "credits_charged": 0,
      "latency_ms": 0,
      "request_id": "https://www.linkedin.com/in/example"
    }
  },
  "status": "succeeded"
}
```

- result.meta.request_id (string): 用于追踪的 Asklear 请求 ID。
- result.meta.api_name (string): 实际执行的采集操作名称。
- result.meta.latency_ms (integer): 采集执行耗时（毫秒）。
- result.meta.credits_charged (integer): 任务完成后 Asklear 用户侧实际结算的 Credits。
- result.data.items (array<object>): 本页返回的公众号文章。
- result.data.item_count (integer): 本页文章数。
- result.data.has_more (boolean): 是否还有下一页且已返回可安全使用的续页令牌。
- result.data.next_cursor (string|null): has_more 为 true 时传回本任务的续页令牌。
- result.data.items[].article_id (string): 文章 ID。
- result.data.items[].title (string|null): 文章标题。
- result.data.items[].summary (string|null): 文章摘要。
- result.data.items[].url (string|null): 公开文章 URL。
- result.data.items[].cover (string|null): 安全可公开时的文章封面 URL。
- result.data.items[].published_at (integer|null): 以 Unix 秒表示的发布时间。
- result.data.items[].account_id (string|null): 公众号 ID。
- result.data.items[].account_name (string|null): 公众号名称。
## get_collection_job

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

执行遵循现有计价；读取公开说明不扣 Credits。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "properties": {
    "job_id": {
      "type": "string"
    },
    "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": [
    "job_id"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "job_id": "collection-example"
}
```

### Response schema / 响应契约

```json
{
  "$defs": {
    "Schema1": {
      "additionalProperties": false,
      "description": "The limited metadata safe to store and expose with a collection result.",
      "properties": {
        "api_name": {
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[\\x21-\\x7e]+$",
          "type": "string"
        },
        "credits_charged": {
          "maximum": 1000000,
          "minimum": 0,
          "type": "integer"
        },
        "latency_ms": {
          "maximum": 120000,
          "minimum": 0,
          "type": "integer"
        },
        "request_id": {
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[\\x21-\\x7e]+$",
          "type": "string"
        }
      },
      "required": [
        "request_id",
        "api_name",
        "latency_ms",
        "credits_charged"
      ],
      "type": "object"
    }
  },
  "additionalProperties": true,
  "properties": {
    "result": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "additionalProperties": true,
          "type": "object"
        },
        "meta": {
          "$ref": "#/$defs/Schema1"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object"
    }
  },
  "type": "object"
}
```

### Synthetic response / 合成响应

```json
{
  "result": {
    "data": {},
    "meta": {
      "api_name": "https://www.linkedin.com/in/example",
      "credits_charged": 0,
      "latency_ms": 0,
      "request_id": "https://www.linkedin.com/in/example"
    }
  },
  "status": "succeeded"
}
```

- result.meta.request_id (string): 用于追踪的 Asklear 请求 ID。
- result.meta.api_name (string): 实际执行的采集操作名称。
- result.meta.latency_ms (integer): 采集执行耗时（毫秒）。
- result.meta.credits_charged (integer): 任务完成后 Asklear 用户侧实际结算的 Credits。
- result.data.items (array<object>): 本页返回的公众号文章。
- result.data.item_count (integer): 本页文章数。
- result.data.has_more (boolean): 是否还有下一页且已返回可安全使用的续页令牌。
- result.data.next_cursor (string|null): has_more 为 true 时传回本任务的续页令牌。
- result.data.items[].article_id (string): 文章 ID。
- result.data.items[].title (string|null): 文章标题。
- result.data.items[].summary (string|null): 文章摘要。
- result.data.items[].url (string|null): 公开文章 URL。
- result.data.items[].cover (string|null): 安全可公开时的文章封面 URL。
- result.data.items[].published_at (integer|null): 以 Unix 秒表示的发布时间。
- result.data.items[].account_id (string|null): 公众号 ID。
- result.data.items[].account_name (string|null): 公众号名称。
## asklear collection get-job

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

执行遵循现有计价；读取公开说明不扣 Credits。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### Input schema / 输入契约

```json
{
  "properties": {
    "job_id": {
      "type": "string"
    },
    "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": [
    "job_id"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "job_id": "collection-example"
}
```

### Response schema / 响应契约

```json
{
  "$defs": {
    "Schema1": {
      "additionalProperties": false,
      "description": "The limited metadata safe to store and expose with a collection result.",
      "properties": {
        "api_name": {
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[\\x21-\\x7e]+$",
          "type": "string"
        },
        "credits_charged": {
          "maximum": 1000000,
          "minimum": 0,
          "type": "integer"
        },
        "latency_ms": {
          "maximum": 120000,
          "minimum": 0,
          "type": "integer"
        },
        "request_id": {
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[\\x21-\\x7e]+$",
          "type": "string"
        }
      },
      "required": [
        "request_id",
        "api_name",
        "latency_ms",
        "credits_charged"
      ],
      "type": "object"
    }
  },
  "additionalProperties": true,
  "properties": {
    "result": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "additionalProperties": true,
          "type": "object"
        },
        "meta": {
          "$ref": "#/$defs/Schema1"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object"
    }
  },
  "type": "object"
}
```

### Synthetic response / 合成响应

```json
{
  "result": {
    "data": {},
    "meta": {
      "api_name": "https://www.linkedin.com/in/example",
      "credits_charged": 0,
      "latency_ms": 0,
      "request_id": "https://www.linkedin.com/in/example"
    }
  },
  "status": "succeeded"
}
```

- result.meta.request_id (string): 用于追踪的 Asklear 请求 ID。
- result.meta.api_name (string): 实际执行的采集操作名称。
- result.meta.latency_ms (integer): 采集执行耗时（毫秒）。
- result.meta.credits_charged (integer): 任务完成后 Asklear 用户侧实际结算的 Credits。
- result.data.items (array<object>): 本页返回的公众号文章。
- result.data.item_count (integer): 本页文章数。
- result.data.has_more (boolean): 是否还有下一页且已返回可安全使用的续页令牌。
- result.data.next_cursor (string|null): has_more 为 true 时传回本任务的续页令牌。
- result.data.items[].article_id (string): 文章 ID。
- result.data.items[].title (string|null): 文章标题。
- result.data.items[].summary (string|null): 文章摘要。
- result.data.items[].url (string|null): 公开文章 URL。
- result.data.items[].cover (string|null): 安全可公开时的文章封面 URL。
- result.data.items[].published_at (integer|null): 以 Unix 秒表示的发布时间。
- result.data.items[].account_id (string|null): 公众号 ID。
- result.data.items[].account_name (string|null): 公众号名称。
## POST /v1/search

legacy · unknown · api_key, oauth

REST 需要客户 API Key；MCP 需要已开放的服务及现有授权；CLI 需要已发布且包含该命令的客户端。

只返回文章，不返回视频、商品或账号推荐卡片。
支持 latest、relevance、hot 三种排序。
支持 all、day、week、half_year 四种发布时间范围；不支持 month 或 year。
有下一页时把返回的 next_cursor 原样传回 cursor。
新令牌有效期 24 小时，绑定访问身份、关键词、排序和时间范围；过期后重新搜索。续页状态异常明确报错，不表示已取完。

每次成功搜索页 3 Credits。

请求声明 idempotency_key 时，同一次操作复用原键；元数据 GET 只读。

等待态响应提供结果/状态引用。先读取原结果；超时或结果不明时禁止自动重新提交付费执行。401/403/422 应先修正鉴权、权限或输入。

### 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": {
        "sort": {
          "enum": [
            "hot",
            "latest",
            "relevance"
          ]
        },
        "time_range": {
          "enum": [
            "all",
            "day",
            "half_year",
            "week"
          ]
        }
      },
      "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
    },
    "page": {
      "const": 1
    },
    "page_token": {
      "default": "",
      "maxLength": 8192,
      "type": "string"
    },
    "query": {
      "anyOf": [
        {
          "maxLength": 200,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "maxLength": 100
    },
    "search_mode": {
      "enum": [
        "text"
      ]
    },
    "source": {
      "const": "wechat"
    },
    "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",
    "query"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "filters": {},
  "page": 1,
  "query": "示例关键词",
  "search_mode": "text",
  "source": "wechat"
}
```

### Synthetic response / 合成响应

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

- data.items (array<object>): 暂无字段说明
- data.items[].account_id (string): 暂无字段说明
- data.items[].account_name (string): 暂无字段说明
- data.items[].article_id (string): 暂无字段说明
- data.items[].cover (string): 暂无字段说明
- data.items[].entity_id (string): 暂无字段说明
- data.items[].published_at (string): 暂无字段说明
- data.items[].snippet (string): 暂无字段说明
- data.items[].summary (string): 暂无字段说明
- data.items[].title (string): 暂无字段说明
- data.items[].url (string): 暂无字段说明
- data.pagination.has_more (boolean): 暂无字段说明
- data.pagination.next_page_token (string|null): 暂无字段说明

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

