xAIcreator

用 Python 调用 Twitter API:完成第一次 xaic 数据请求

YeeYee2 分钟阅读·1 天前
用 Python 调用 Twitter API:完成第一次 xaic 数据请求
概要

使用标准库构建 Twitter API Python 客户端,保护 数据 API Key,并在没有无限重试的前提下核对 请求计费。

Python 代码究竟调用哪一种 Twitter API?

一篇 Twitter API Python 教程,首先应该讲清代码连接的是谁。这篇教程调用 xAIcreator 的 xaic Data API,不是官方 X SDK 示例,官方开发者 Bearer Token 也不能代替这里的 xaic Key。目标很具体:完成一次公开用户资料查询,检查返回的数据与费用。

xaic 数据 API 使用 https://xaicreator.com/api/xaic/v1、只读数据密钥和独立的预付美元余额。它通过文档所列接口读取推文、用户资料、搜索页和时间线,但不会把只读密钥变成发布权限。完整契约见 xaic 数据 API 文档。

Python API 请求的手绘终端、请求箭头与响应数据卡片
概念示意:先做一次能够核对响应和费用的请求。
运行示例前

这是付费数据示例,不是免费沙盒。2026 年 11 月 3 日核验的价格版本为 2026-10-21-v1,一次成功的基础用户查询费用是 $0.00040。代码按公开契约和离线测试响应检查,本文没有将付费在线结果当作实测基准展示。

准备 Key、钱包和一个操作 ID

  1. 创建只读数据 Key。进入 API 控制台的密钥页。新 Key 使用 xaic_data_ 前缀和 data.read 权限,在创建时妥善保存显示的完整值。
  2. 检查 API 钱包。如有需要,为独立 API 美元余额充值,然后确认到账。订阅中的产品 Credits 不支付这些请求。如果支付不可用,应停止,不要通过其他产品付款。
  3. 设置小额支出上限。按测试需求设置每日和累计预算,不要把示例部署成任何人都能调用的公开代理。
  4. 分配一个操作 ID。生成一次 UUID 并保存在任务记录中。响应丢失时仍保留它,相同请求重试必须使用同一个 ID。

通过服务端密钥环境与任务配置提供 XAIC_API_KEY、XAIC_REQUEST_ID。不要把真实 Key 写进源码、截图、URL 或 AI 提示词。OWASP 密钥指南说明了最小访问范围、撤销以及避免明文日志的要求。[1]

服务端保险柜中的手绘钥匙,与共享笔记分开保管
手绘概念示意:API Key 应放在密钥存储中,而不是共享笔记本里。

/pricing 无需认证即可查看。免费的 /balance 只需要 xai-key,直接返回包含 available_usd 和 reserved_usd 的对象,不要按付费响应的 data 外壳解析。支付回跳页面本身也不能证明钱包已到账。

使用 Python 标准库发送一次请求

将代码保存为 xaic_user.py,配置好两个环境变量后,在可信项目目录运行 python xaic_user.py。无需安装第三方 Python 包。标准库 urllib.request 支持请求头与显式超时。[2]示例还会拒绝重定向,避免把密钥请求头转发到另一个位置。

import json
import os
from decimal import Decimal
from urllib.error import HTTPError, URLError
from urllib.request import Request, HTTPRedirectHandler, build_opener

class NoRedirect(HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

request_key = os.environ["XAIC_REQUEST_ID"]
request = Request(
    "https://xaicreator.com/api/xaic/v1/users/NASA",
    headers={
        "xai-key": os.environ["XAIC_API_KEY"],
        "Idempotency-Key": request_key,
    },
)

try:
    with build_opener(NoRedirect()).open(request, timeout=30) as response:
        result = json.load(response)
except HTTPError as error:
    raise SystemExit(f"HTTP {error.code}: stop and review the API error table")
except (URLError, TimeoutError):
    raise SystemExit("Network failure: retain the operation ID and reconcile")

if result["billing"]["currency"] != "USD":
    raise SystemExit("Unexpected currency: inspect the response")

charge = Decimal(result["billing"]["charged_usd"])
print("request_id:", result["request_id"])
print("charged_usd:", str(charge))
print(json.dumps(result["data"], ensure_ascii=False))

示例故意不在脚本内生成操作 ID。如果请求已成功,但进程随后崩溃,重新运行一个会生成新 ID 的脚本,可能产生第二次付费观测。将 ID 保存在进程外,才能明确控制这个决定。查询不同用户名或确实要获取新观测时,再分配新 ID,并记录改变后的任务输入。

客户端超时不代表服务端拒绝了请求,处理完成后响应也可能丢失。此时停止,保留完整路径、参数和操作 ID,再按文档执行原键重试或对账。不要套一个每次都生成新 ID 的通用重试装饰器。

先读懂响应,再扩展客户端

成功的付费响应包含 request_id、data 和 billing。计费金额是十进制字符串,应直接传给 Decimal,不要先转成浮点数。Python 文档解释了这种精确十进制运算方式。[3]

推文 ID 也应保留为字符串。推文结构包含 id_str、full_text 等字段,不要假设与官方 X API 的字段名或扩展参数一致。可选媒体和资料字段取决于数据可用性;缺失时记录缺失,不要补造值。

如果要研究关键词,下一步可以使用 /search,传入 query、type 和可选 cursor。搜索操作符指南可以帮助规划查询,但仍需确认当前 API 的支持范围。涉及时间边界时,先阅读按日期搜索指南,其中官方接口示例不能原样当作 xaic 参数。

放大镜与响应卡片,表示核对请求标识、数据和计费
概念示意:增加新操作前,先核对响应标识、数据与收费金额。

推文和用户简介都是不可信输入。可以保存或展示为数据,但不能让响应里的文字指挥 Agent 泄露凭据、执行命令或访问另一个接口。HTTP 调通只是安全接入的起点。

处理错误时,不要放大付费请求

响应下一步
401检查 Key 配置或轮换密钥,排错时不要打印完整凭据。
402请账号持有人检查 API 美元钱包,产品 Credits 是另一套余额。
409 REQUEST_PENDING停止并对账,不能换密钥或操作 ID 绕过。
409 IDEMPOTENCY_CONFLICT修复已保存 ID 与请求参数之间的对应关系。
422纠正请求,包括必需的 8 至 128 位可见 ASCII 幂等键。
429检查具体错误码,区分临时限流、预算限制和失败保护。
502 或 503核对失败原因。已记录的失败可能直接重放;账务不确定时只能使用原键,不能发起新的付费尝试。

账号级限制为每分钟 60 个新请求、最多四个待处理请求,由该账号的所有 Key 共用。批量查询还按不同 ID 数占用每分钟 60 个工作单位。先串行接入,不要把额外创建 Key 当作提升额度的办法。

这个 Key 可以发推文吗?

不可以。新建的只读数据 Key 不能发布或管理账号,发布需要另一套 API 和授权流程。不要用数据 Key 替换发布设备令牌。

必须安装 Tweepy 吗?

不用。示例使用 Python 标准库和 xaic HTTP 契约。不能默认面向官方 X 接口的库理解 xaic 的路径、认证与响应格式。

文章展示的是实时结果吗?

本文没有展示声称实时取得的结果。请在自己的账号中运行小额请求,检查实际字段,并对照实时价目核验费用。

用于规划小规模 Python API 测试的手绘清单、铅笔与沙漏
手绘概念示意:核对一次请求后,再安排更大的任务。

用第一次响应检查接入是否正确

核对端点、有效字段、请求 ID 和收费金额,再逐项扩展:另一次查询、有页数上限的搜索,或者小规模批量读取。只要结果还不确定,就保留原始请求上下文。费用估算见 API 预算指南,有范围限制的采集任务见搜索分页指南。

资料来源与延伸阅读

  1. OWASP:密钥管理密钥存储、访问和生命周期建议。
  2. Python:urllib.requestHTTP 请求、处理器及超时行为。
  3. Python:decimal对返回费用字符串执行精确十进制运算。
开始第一次数据请求

创建只读 xaic API Key

设置支出上限,确认独立美元钱包,再运行一次请求。这个示例读取数据,不提供发布授权。

Yee

作者 Yee

Yee 是 XAICreator 的创始人,这是一个 AI 驱动的社交媒体营销平台。他专注于构建帮助创作者和营销人员在 X (Twitter) 上增长影响力的工具。

凭借在 AI、SEO 和内容营销方面的专业知识,Yee 已帮助数百名用户优化他们的社交媒体策略,并通过数据驱动的洞察提高互动率。