# 搜索 X 推文

按关键词搜索 X（推特）推文，按游标翻页。

ID: task:twitter_search_posts_v1 · Region: cn · Status: available

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

X（推特）

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

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

## GET /v1/collections/tasks/twitter_search_posts_v1

legacy · available · api_key, oauth

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



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

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

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

### Input schema / 输入契约

```json
{
  "properties": {
    "task_code": {
      "const": "twitter_search_posts_v1"
    },
    "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": "twitter_search_posts_v1"
}
```

### Synthetic response / 合成响应

```json
{
  "examples": [
    {
      "keyword": "robot vacuum"
    }
  ],
  "input_schema": {
    "additionalProperties": false,
    "properties": {
      "cursor": {
        "default": "",
        "maxLength": 4096,
        "type": "string"
      },
      "keyword": {
        "maxLength": 100,
        "minLength": 1,
        "type": "string",
        "ui_default": ""
      },
      "search_type": {
        "default": "Top",
        "enum": [
          "Top",
          "Latest"
        ],
        "type": "string"
      }
    },
    "required": [
      "keyword"
    ],
    "type": "object"
  }
}
```

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

legacy · available · api_key, oauth

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



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

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

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

### Input schema / 输入契约

```json
{
  "properties": {
    "task_code": {
      "const": "twitter_search_posts_v1"
    },
    "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": "twitter_search_posts_v1"
}
```

### Synthetic response / 合成响应

```json
{
  "examples": [
    {
      "keyword": "robot vacuum"
    }
  ],
  "input_schema": {
    "additionalProperties": false,
    "properties": {
      "cursor": {
        "default": "",
        "maxLength": 4096,
        "type": "string"
      },
      "keyword": {
        "maxLength": 100,
        "minLength": 1,
        "type": "string",
        "ui_default": ""
      },
      "search_type": {
        "default": "Top",
        "enum": [
          "Top",
          "Latest"
        ],
        "type": "string"
      }
    },
    "required": [
      "keyword"
    ],
    "type": "object"
  }
}
```

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

legacy · available · api_key, oauth

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



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

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

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

### Input schema / 输入契约

```json
{
  "properties": {
    "task_code": {
      "const": "twitter_search_posts_v1"
    },
    "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": "twitter_search_posts_v1"
}
```

### Synthetic response / 合成响应

```json
{
  "examples": [
    {
      "keyword": "robot vacuum"
    }
  ],
  "input_schema": {
    "additionalProperties": false,
    "properties": {
      "cursor": {
        "default": "",
        "maxLength": 4096,
        "type": "string"
      },
      "keyword": {
        "maxLength": 100,
        "minLength": 1,
        "type": "string",
        "ui_default": ""
      },
      "search_type": {
        "default": "Top",
        "enum": [
          "Top",
          "Latest"
        ],
        "type": "string"
      }
    },
    "required": [
      "keyword"
    ],
    "type": "object"
  }
}
```

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

legacy · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

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

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

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

### Input schema / 输入契约

```json
{
  "$defs": {},
  "additionalProperties": false,
  "description": "Outer transport contract; each registered task validates its own input.",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "cursor": {
          "default": "",
          "maxLength": 4096,
          "type": "string"
        },
        "keyword": {
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "search_type": {
          "default": "Top",
          "enum": [
            "Top",
            "Latest"
          ],
          "type": "string"
        }
      },
      "required": [
        "keyword"
      ],
      "type": "object"
    },
    "task_code": {
      "const": "twitter_search_posts_v1"
    }
  },
  "required": [
    "task_code",
    "input"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "input": {
    "keyword": "robot vacuum"
  },
  "task_code": "twitter_search_posts_v1"
}
```

### Synthetic response / 合成响应

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

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

legacy · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

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

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

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

### Input schema / 输入契约

```json
{
  "$defs": {},
  "additionalProperties": false,
  "description": "Outer transport contract; each registered task validates its own input.",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "cursor": {
          "default": "",
          "maxLength": 4096,
          "type": "string"
        },
        "keyword": {
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "search_type": {
          "default": "Top",
          "enum": [
            "Top",
            "Latest"
          ],
          "type": "string"
        }
      },
      "required": [
        "keyword"
      ],
      "type": "object"
    },
    "task_code": {
      "const": "twitter_search_posts_v1"
    },
    "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": {
    "keyword": "robot vacuum"
  },
  "task_code": "twitter_search_posts_v1"
}
```

### Synthetic response / 合成响应

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

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

legacy · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

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

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

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

### Input schema / 输入契约

```json
{
  "$defs": {},
  "additionalProperties": false,
  "description": "Outer transport contract; each registered task validates its own input.",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "cursor": {
          "default": "",
          "maxLength": 4096,
          "type": "string"
        },
        "keyword": {
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "search_type": {
          "default": "Top",
          "enum": [
            "Top",
            "Latest"
          ],
          "type": "string"
        }
      },
      "required": [
        "keyword"
      ],
      "type": "object"
    },
    "task_code": {
      "const": "twitter_search_posts_v1"
    },
    "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": {
    "keyword": "robot vacuum"
  },
  "task_code": "twitter_search_posts_v1"
}
```

### Synthetic response / 合成响应

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

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

legacy · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

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

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

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

### Input schema / 输入契约

```json
{
  "$defs": {},
  "additionalProperties": false,
  "properties": {
    "idempotency_key": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "input": {
      "additionalProperties": false,
      "properties": {
        "cursor": {
          "default": "",
          "maxLength": 4096,
          "type": "string"
        },
        "keyword": {
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "search_type": {
          "default": "Top",
          "enum": [
            "Top",
            "Latest"
          ],
          "type": "string"
        }
      },
      "required": [
        "keyword"
      ],
      "type": "object"
    },
    "max_credits": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "quote_token": {
      "maxLength": 4096,
      "minLength": 16,
      "type": "string"
    },
    "task_code": {
      "const": "twitter_search_posts_v1"
    }
  },
  "required": [
    "task_code",
    "input",
    "quote_token",
    "idempotency_key"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "idempotency_key": "directory-example",
  "input": {
    "keyword": "robot vacuum"
  },
  "quote_token": "quote-token-from-estimate",
  "task_code": "twitter_search_posts_v1"
}
```

### 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 · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

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

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

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

### Input schema / 输入契约

```json
{
  "$defs": {},
  "additionalProperties": false,
  "properties": {
    "idempotency_key": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "input": {
      "additionalProperties": false,
      "properties": {
        "cursor": {
          "default": "",
          "maxLength": 4096,
          "type": "string"
        },
        "keyword": {
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "search_type": {
          "default": "Top",
          "enum": [
            "Top",
            "Latest"
          ],
          "type": "string"
        }
      },
      "required": [
        "keyword"
      ],
      "type": "object"
    },
    "max_credits": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "quote_token": {
      "maxLength": 4096,
      "minLength": 16,
      "type": "string"
    },
    "task_code": {
      "const": "twitter_search_posts_v1"
    },
    "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": {
    "keyword": "robot vacuum"
  },
  "quote_token": "quote-token-from-estimate",
  "task_code": "twitter_search_posts_v1"
}
```

### 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 · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

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

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

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

### Input schema / 输入契约

```json
{
  "$defs": {},
  "additionalProperties": false,
  "properties": {
    "idempotency_key": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "input": {
      "additionalProperties": false,
      "properties": {
        "cursor": {
          "default": "",
          "maxLength": 4096,
          "type": "string"
        },
        "keyword": {
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "search_type": {
          "default": "Top",
          "enum": [
            "Top",
            "Latest"
          ],
          "type": "string"
        }
      },
      "required": [
        "keyword"
      ],
      "type": "object"
    },
    "max_credits": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "quote_token": {
      "maxLength": 4096,
      "minLength": 16,
      "type": "string"
    },
    "task_code": {
      "const": "twitter_search_posts_v1"
    },
    "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": {
    "keyword": "robot vacuum"
  },
  "quote_token": "quote-token-from-estimate",
  "task_code": "twitter_search_posts_v1"
}
```

### 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 · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

执行遵循现有计价；读取公开说明不扣 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.items[].tweet_id (scalar|null): 推文 ID（如有）。
- result.data.items[].text (scalar|null): 正文内容（如有）。
- result.data.items[].published_at (integer|null): 发布时间（如有）。
- result.data.items[].language (scalar|null): 语言（如有）。
- result.data.items[].like_count (scalar|null): 点赞数（如有）。
- result.data.items[].repost_count (scalar|null): 转发数（如有）。
- result.data.items[].reply_count (scalar|null): 回复数（如有）。
- result.data.items[].quote_count (scalar|null): 引用数（如有）。
- result.data.items[].bookmark_count (scalar|null): 收藏数（如有）。
- result.data.items[].view_count (scalar|null): 浏览数（如有）。
- result.data.items[].is_sensitive (scalar|null): 是否敏感内容（如有）。
- result.data.items[].conversation_id (scalar|null): 会话ID（如有）。
- result.data.items[].in_reply_to_tweet_id (scalar|null): 在回复到推文ID（如有）。
- result.data.items[].author_id (scalar|null): 作者 ID（如有）。
- result.data.items[].author_name (scalar|null): 作者名称（如有）。
- result.data.items[].author_handle (scalar|null): 作者账号（如有）。
- result.data.has_more (boolean): 是否还有下一页。
- result.data.next_cursor (string|null): 下一页游标；无下一页时为 null。
## get_collection_job

legacy · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

执行遵循现有计价；读取公开说明不扣 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.items[].tweet_id (scalar|null): 推文 ID（如有）。
- result.data.items[].text (scalar|null): 正文内容（如有）。
- result.data.items[].published_at (integer|null): 发布时间（如有）。
- result.data.items[].language (scalar|null): 语言（如有）。
- result.data.items[].like_count (scalar|null): 点赞数（如有）。
- result.data.items[].repost_count (scalar|null): 转发数（如有）。
- result.data.items[].reply_count (scalar|null): 回复数（如有）。
- result.data.items[].quote_count (scalar|null): 引用数（如有）。
- result.data.items[].bookmark_count (scalar|null): 收藏数（如有）。
- result.data.items[].view_count (scalar|null): 浏览数（如有）。
- result.data.items[].is_sensitive (scalar|null): 是否敏感内容（如有）。
- result.data.items[].conversation_id (scalar|null): 会话ID（如有）。
- result.data.items[].in_reply_to_tweet_id (scalar|null): 在回复到推文ID（如有）。
- result.data.items[].author_id (scalar|null): 作者 ID（如有）。
- result.data.items[].author_name (scalar|null): 作者名称（如有）。
- result.data.items[].author_handle (scalar|null): 作者账号（如有）。
- result.data.has_more (boolean): 是否还有下一页。
- result.data.next_cursor (string|null): 下一页游标；无下一页时为 null。
## asklear collection get-job

legacy · available · api_key, oauth

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

search_type 只接受 Top 与 Latest。
要取某条推文的详情用 twitter_tweet_detail_v1。

执行遵循现有计价；读取公开说明不扣 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.items[].tweet_id (scalar|null): 推文 ID（如有）。
- result.data.items[].text (scalar|null): 正文内容（如有）。
- result.data.items[].published_at (integer|null): 发布时间（如有）。
- result.data.items[].language (scalar|null): 语言（如有）。
- result.data.items[].like_count (scalar|null): 点赞数（如有）。
- result.data.items[].repost_count (scalar|null): 转发数（如有）。
- result.data.items[].reply_count (scalar|null): 回复数（如有）。
- result.data.items[].quote_count (scalar|null): 引用数（如有）。
- result.data.items[].bookmark_count (scalar|null): 收藏数（如有）。
- result.data.items[].view_count (scalar|null): 浏览数（如有）。
- result.data.items[].is_sensitive (scalar|null): 是否敏感内容（如有）。
- result.data.items[].conversation_id (scalar|null): 会话ID（如有）。
- result.data.items[].in_reply_to_tweet_id (scalar|null): 在回复到推文ID（如有）。
- result.data.items[].author_id (scalar|null): 作者 ID（如有）。
- result.data.items[].author_name (scalar|null): 作者名称（如有）。
- result.data.items[].author_handle (scalar|null): 作者账号（如有）。
- result.data.has_more (boolean): 是否还有下一页。
- result.data.next_cursor (string|null): 下一页游标；无下一页时为 null。
## POST /v1/search

legacy · unavailable · api_key, oauth

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

要取某条推文的详情用 `twitter_tweet_detail_v1`。
首次响应的 pagination.next_page_token 是 asklear-search-cursor-v1. 开头的不透明 Search 令牌；续页原样放入 page_token，保持 search_mode、query、filters 和 page_size 不变。令牌最长 4096 个 ASCII 字符，有效期 24 小时；无效、过期或错绑令牌返回 invalid_query。不要发送上游原始续页值；page 应省略或保持为 1，其他 page 值和 page_size 会被拒绝。Collection 与 /v1/search 共用任务码，但输入与续页契约相互独立；Search 入口通过 /v1/search 使用，Collection 兼容入口使用供应商形输入。

每个成功任务 2 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": [
            "latest",
            "relevance"
          ]
        }
      },
      "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": "twitter"
    },
    "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": "twitter"
}
```

### Synthetic response / 合成响应

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

- data.items (array<object>): 本页返回的公开 Search 结果。
- data.items[].entity_id (string): 结果的稳定公开标识。
- data.items[].title (string|null): 本阶段没有标题；统一结果字段保留为可空字符串。
- data.items[].url (string|null): 本阶段没有可靠的公开 URL；统一结果字段保留为可空字符串。
- data.items[].snippet (string|null): 由推文正文填充的来源无关文本摘要。
- data.items[].text (string|null): 推文正文（如有）。
- data.items[].published_at (integer|null): 以 Unix 秒表示的发布时间。
- data.items[].like_count (integer|null): 点赞数。
- data.items[].repost_count (integer|null): 转发数。
- data.items[].comment_count (integer|null): 评论数，由上游 reply_count 映射而来。
- data.items[].quote_count (integer|null): 引用数。
- data.items[].bookmark_count (integer|null): 书签数。
- data.items[].view_count (integer|null): 浏览数。
- data.items[].author_id (string|null): 作者 ID。
- data.items[].author_name (string|null): 作者显示名称。
- data.pagination.has_more (boolean): 是否还有下一页公开 Search 结果。
- data.pagination.next_page_token (string|null): 传回 page_token 的不透明续页令牌；令牌以 asklear-search-cursor-v1. 开头。

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

