Instagram 用户ID查询API使用教程

Instagram 用户ID查询API教程:通过 SandBase 把用户名转换为数字ID、再把ID反查回用户名,附 curl、Python 代码和 2026-10-01 至 2026-10-04 的实测返回,适用于自动化和 AI Agent。

instagram-user-id-api-tutorial-2026 cover

**更新(2026-10-04):**ID → 用户名这一步现在改用 instagram/v3/user-id-to-username。2026-10-01 时这个接口时好时坏(复测 4 次有 2 次返回 HTTP 503),所以本文旧版改用了 instagram/v1/user-info-by-id。到 2026-10-04,Instagram ID 查用户名实测里它对 18 个品牌账号ID的 54 次调用全部成功,每次 2.5 到 4.9 秒;同一天我重跑本文代码(中英文两个版本)时,它对真实账号的 31 次调用也全部返回,耗时 2.5 到 5.0 秒。instagram/v1/user-id-to-username 和 instagram/v2/user-id-to-username 在 SandBase 注册表里已停用,2026-10-04 调用均返回 HTTP 404 endpoint_not_found。接口2、粉丝追踪器和批量处理的代码都在 2026-10-04(UTC)重新运行过;接口1的响应仍是 2026-10-01 的结果。批量转换 CSV 的脚本和各种无效ID的返回,见 Instagram ID 查用户名教程。

先说结论 — 用户名 → ID 用 instagram/v3/user-id-by-username(2026-10-01 实测 natgeo → 787132),ID → 用户名用 instagram/v3/user-id-to-username,当前的 username 直接在返回数据顶层(2026-10-04 实测 787132 → natgeo)。两者都是用一个 SandBase API Key 调 POST https://api.sandbase.ai/v1/api/<model>,2026-10-04 目录价均为 Free,数据从 outputs[0].data 读取。v3 解析不了的ID,可以交给 instagram/v1/user-info-by-id-v2,它会直接回答“This account does not exist.”,而不是返回 503。

Instagram 用户ID查询API使用教程

如果你曾尝试构建 Instagram 自动化工具——无论是粉丝追踪器、数据分析面板,还是社交媒体监控 Agent——你一定遇到过同样的问题:很多 Instagram 数据工作流用数字用户ID而不是用户名来标识账号。这意味着在执行任何有用操作之前,你需要一种可靠的方式在用户名和ID之间进行转换。

本教程将展示如何用 SandBase Instagram 目录(截至 2026-10-01 列出 81 个端点)里的两个端点实现这一功能。我们将涵盖双向转换(用户名 → ID 和 ID → 用户名),提供完整的代码示例,并讨论 AI Agent 和自动化工作流的实际应用场景。

这个数字取自目录页:页面上写着“81 SHOWN”,第一张卡片就是本文用的 user-id-by-username,标着 Available · Free。

SandBase Instagram API 目录页,显示 81 个端点,选中的 Get user ID by username 标为 Available、Free

截图:SandBase Instagram 目录页列出 81 个端点,选中的 v3/user-id-by-username 卡片显示 Available 和 Free(2026-10-02 截取)。

为什么需要 Instagram 用户ID查询

大多数 Instagram 自动化任务需要数字用户ID,而不是人类可读的用户名。原因如下:

  • 粉丝追踪:要监控粉丝数量的变化趋势,你需要目标账号的用户ID来持续查询粉丝列表。
  • 内容排期:自动化工具在内部通过ID引用账号,即使用户输入的是用户名。
  • 数据分析面板:跨账号聚合指标需要稳定的标识符——用户名可以修改,但ID不会变。
  • 跨平台匹配:构建统一社交档案(Instagram + TikTok + YouTube)时,用户ID为每个平台提供稳定的锚点。
  • AI Agent 工作流:监控竞争对手或追踪网红的 Agent 需要程序化的ID解析作为第一步。

Meta 的官方方式是 Business Discovery:拥有专业 Instagram 账号并持有访问令牌的已授权应用用户,可以查询 business_discovery.username(...),拿到另一个商业或创作者账号的ID。它不覆盖个人账号,并且需要先完成应用和授权配置。如果你只需要公开资料数据,SandBase 是更轻量的选择。

SandBase(本文)Meta Business Discovery
认证一个 SandBase API KeyMeta 应用、专业 Instagram 账号、带权限的访问令牌
目标账号端点能返回的公开账号商业账号和创作者账号
数据 / 操作只读的公开资料字段在已授权应用内读取目标账号字段
局限第三方端点,会出现上游错误(见下文)Meta 应用审核、权限和速率限制

适用范围:公开、只读数据

这些端点只返回 Instagram 公开、只读的账号数据。调用需要 SandBase API Key,SandBase 不是 Meta 或 Instagram 的官方合作方。不提供私密账号、私信、账号所有者专属分析,也不支持发布或任何账号操作。

SandBase 提供什么

SandBase 提供统一的社交媒体数据API层,覆盖 Instagram、TikTok、抖音、YouTube 等平台。对于 Instagram 用户ID查询,本文使用两个接口:

方向接口说明
用户名 → IDinstagram/v3/user-id-by-username通过用户名获取数字用户ID
ID → 用户名instagram/v3/user-id-to-username通过数字用户ID获取当前 username(附带基础资料字段)

两个接口调用方式相同,返回同样的 SandBase 信封(id、status、model、outputs[0].data)。下文还会提到两个相关接口:instagram/v1/user-info-by-id-v2 是 v3 解析不了某个ID时的备用接口;instagram/v1/user-info-by-id 返回的资料大得多,需要 v3 没有的字段时再用。

SandBase instagram/v3/user-id-by-username 模型页,playground 中有用户名输入框

截图:较早截取的 instagram/v3/user-id-by-username 模型页,playground 只需填一个必填的 username;网站布局之后有调整,当前页面以下文 2026-10-02 截取的参考页为准。

开始使用

准备工作

  1. SandBase 账号(在 sandbase.ai 注册)
  2. 从控制面板获取 API Key,并导出为环境变量 SANDBASE_API_KEY
  3. 安装 curl 或 Python(3.10+)

认证与调用方式

示例使用 Model API 路由:POST https://api.sandbase.ai/v1/api/<model>,Bearer Token 认证,参数放在 JSON 请求体中。这是端点参考页的调用面,不是目录页展示的 GET 路由;参考页生成的示例可能还带 model 字段,以参考页为准。

Authorization: Bearer $SANDBASE_API_KEY
Content-Type: application/json

参考文档把数据记录在 outputs[0].data;下面的 Python 辅助函数只读这个位置,调用未完成时抛出错误。请求 schema 见 user-id-by-username 参考和 user-id-to-username 参考。

user-id-by-username 参考页列出了下面 curl 示例用到的路由和唯一的必填字段 username。

SandBase instagram/v3/user-id-by-username 端点参考页,显示 POST /v1/api/instagram/v3/user-id-by-username 和必填的 username 字段

截图:instagram/v3/user-id-by-username 参考页记录了 POST /v1/api/instagram/v3/user-id-by-username、必填字符串 username,以及 id / status / model / outputs 响应结构(2026-10-02 截取)。

接口1:用户名查询用户ID

这是最常见的使用场景。你有一个 Instagram 用户名(如 natgeo 或 nike),需要获取对应的数字用户ID。

curl 示例

curl -X POST "https://api.sandbase.ai/v1/api/instagram/v3/user-id-by-username" \
  -H "Authorization: Bearer $SANDBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username": "natgeo"}'

响应示例

实测于 2026-10-01(UTC),使用国家地理的公开账号(natgeo)。上面的 curl 请求返回 HTTP 200,完整响应如下(run id 06c129cd-2779-4b5c-b409-b5137d2bd1d7):

{
  "id": "06c129cd-2779-4b5c-b409-b5137d2bd1d7",
  "status": "completed",
  "model": "instagram/v3/user-id-by-username",
  "outputs": [
    { "data": { "user_id": "787132" } }
  ]
}

user_id 字段名是我实测观察到的,不是文档保证。这个接口只返回ID;粉丝数等资料需要把ID传给接口2。

Python 示例

import os
import requests

API_KEY = os.environ["SANDBASE_API_KEY"]
BASE_URL = "https://api.sandbase.ai/v1/api"


def call_model(model: str, params: dict) -> dict:
    """POST 调用 SandBase 模型并返回 outputs[0].data。"""
    response = requests.post(
        f"{BASE_URL}/{model}",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json=params,
        timeout=120,
    )
    response.raise_for_status()
    body = response.json()
    outputs = body.get("outputs") or []
    if body.get("status") != "completed" or not outputs:
        raise RuntimeError(f"SandBase call did not complete: {body.get('status')} {body.get('error')}")
    return outputs[0].get("data") or {}


def get_user_id_by_username(username: str) -> str | None:
    """将 Instagram 用户名转换为数字用户ID。"""
    data = call_model("instagram/v3/user-id-by-username", {"username": username})
    return data.get("user_id")


# 使用示例
print(f"用户ID: {get_user_id_by_username('natgeo')}")

接口2:用户ID查询用户名

反向查询适用于你已存储用户ID(来自 webhook、数据库或其他API响应)并需要解析回可读用户名的场景。instagram/v3/user-id-to-username 只有一个必填参数 user_id,返回一份精简资料,当前的 username 就在 outputs[0].data 顶层。ID 要以字符串传入:2026-10-04 我发送 {"user_id": 787132}(JSON 数字),得到 HTTP 400,报错为 parameter validation failed: /user_id: expected string, but got number。

curl 示例

curl -X POST "https://api.sandbase.ai/v1/api/instagram/v3/user-id-to-username" \
  -H "Authorization: Bearer $SANDBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id": "787132"}'

响应示例

实测于 2026-10-04(UTC),使用接口1拿到的 natgeo 的ID 787132。上面的 curl 请求返回了已完成的响应,耗时 2.78 秒(run id 64abd76a-c4fe-4a0a-a3bf-7940cc058ba1)。data 里我省略了三个键(profile_pic_url、profile_pic_url_hd 和内部字段 _rid),其余内容与原始返回一致:

{
  "id": "64abd76a-c4fe-4a0a-a3bf-7940cc058ba1",
  "status": "completed",
  "model": "instagram/v3/user-id-to-username",
  "outputs": [
    {
      "data": {
        "biography": "Step into wonder and find your inner explorer with National Geographic 🌎",
        "category": "",
        "edge_follow": {"count": 194},
        "edge_followed_by": {"count": 268458203},
        "edge_owner_to_timeline_media": {"count": 32041},
        "external_url": "http://visitstore.bio/natgeo",
        "follower_count": 268458203,
        "following_count": 194,
        "full_name": "National Geographic",
        "id": "787132",
        "is_private": false,
        "is_verified": true,
        "media_count": 32041,
        "pk": "787132",
        "username": "natgeo"
      }
    }
  ]
}

这些字段名是实测观察到的,不是文档契约。username 是当前用户名,id 和 pk 都是你传入的ID,粉丝数出现了两次:follower_count,以及 edge_followed_by 里的 count。

Python 示例

这里复用接口1的 call_model。get_profile_by_id 读取用户名和下文粉丝追踪器要用的字段;confirm_missing 用来在 v3 拒绝某个ID时做二次确认。

def get_profile_by_id(user_id: str) -> dict:
    """将数字用户ID解析为当前用户名和基础资料字段。"""
    data = call_model("instagram/v3/user-id-to-username", {"user_id": str(user_id).strip()})
    return {
        "user_id": data.get("id", user_id),
        "username": data.get("username"),
        "full_name": data.get("full_name"),
        "is_verified": data.get("is_verified"),
        "follower_count": data.get("follower_count"),
    }


def confirm_missing(user_id: str) -> str | None:
    """询问 instagram/v1/user-info-by-id-v2:账号不存在时它会直接说明,而不是返回 503。"""
    data = call_model("instagram/v1/user-info-by-id-v2", {"user_id": str(user_id).strip()})
    return data.get("errorMessage")


# 使用示例
profile = get_profile_by_id("787132")
print(f"用户名: {profile['username']}({profile['follower_count']:,} 粉丝)")

unknown = "99999999999999999"
try:
    get_profile_by_id(unknown)
except requests.HTTPError as e:
    print(f"v3 返回 HTTP {e.response.status_code};备用接口回答: {confirm_missing(unknown)}")

2026-10-04(UTC)与接口1的代码块一起运行,call_model 来自接口1,第一行也是它打印的。787132 的 v3 查询耗时 4.98 秒(run id 378e7f16-96e5-4c4d-b8db-924fcdcfcb82);不存在的ID在 2.32 秒后收到 v3 的 HTTP 503,没有 run id;备用接口用 4.04 秒给出回答(run id 28244cf2-6508-4e4c-9fee-25308291e2aa):

用户ID: 787132
用户名: natgeo(268,458,146 粉丝)
v3 返回 HTTP 503;备用接口回答: This account does not exist.

未知ID与备用接口

ID 不对的时候,instagram/v3/user-id-to-username 不会告诉你。在 2026-10-04 的 Instagram ID 查用户名实测里,不存在的ID、前后带空格的ID、非数字和空字符串,统统返回 HTTP 503,附带同一句笼统的上游报错,和上游临时故障时的状态码一模一样。所以调用前先去掉空白、确认ID全是数字;同一个ID反复 503,就用 instagram/v1/user-info-by-id-v2 确认一次。对上面 Python 示例里的那个不存在的ID,它返回 HTTP 200 和一个已完成的 run,数据里直接写明了原因。完整响应如下(run id 28244cf2-6508-4e4c-9fee-25308291e2aa):

{
  "id": "28244cf2-6508-4e4c-9fee-25308291e2aa",
  "status": "completed",
  "model": "instagram/v1/user-info-by-id-v2",
  "outputs": [
    {
      "data": {
        "errorMessage": "This account does not exist.",
        "status": false
      }
    }
  ]
}

instagram/v1/user-info-by-id 是本文旧版在这一步用的接口。它现在仍然可用,请求体同样只有一个字段,但返回的资料要大得多,只有在需要 v3 没有返回的资料字段时才值得用它。它的参考页里唯一的必填字段是 user_id:

SandBase instagram/v1/user-info-by-id 端点参考页,显示 POST /v1/api/instagram/v1/user-info-by-id 和必填的 user_id 字段

截图:instagram/v1/user-info-by-id 参考页记录了 POST /v1/api/instagram/v1/user-info-by-id 和必填字符串 user_id;自 2026-10-04 起,本文只把它当作比 v3/user-id-to-username 返回字段更多的替代接口(2026-10-02 截取)。

实战案例:构建粉丝追踪 Agent

让我们将以上内容整合到一个更实际的场景中。假设你正在构建一个 AI Agent,收集一组竞争对手账号的粉丝数量。每个账号需要两次调用:先用 instagram/v3/user-id-by-username 把用户名转成ID,再用 instagram/v3/user-id-to-username 把ID转成资料,后者在当前用户名旁边直接给出 follower_count。detect_changes 会把本次结果和你自己保存的上一次快照做比较;加载快照和发送告警由你的应用实现。

import os
import json
from datetime import datetime, timezone

import requests

API_KEY = os.environ["SANDBASE_API_KEY"]
BASE_URL = "https://api.sandbase.ai/v1/api"

TRACKED_ACCOUNTS = ["nike", "adidas", "puma", "newbalance"]


def call_model(model: str, params: dict) -> dict:
    """POST 调用 SandBase 模型并返回 outputs[0].data。"""
    response = requests.post(
        f"{BASE_URL}/{model}",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json=params,
        timeout=120,
    )
    response.raise_for_status()
    body = response.json()
    outputs = body.get("outputs") or []
    if body.get("status") != "completed" or not outputs:
        raise RuntimeError(f"SandBase call did not complete: {body.get('status')} {body.get('error')}")
    return outputs[0].get("data") or {}


def get_user_id_by_username(username: str) -> str | None:
    data = call_model("instagram/v3/user-id-by-username", {"username": username})
    return data.get("user_id")


def get_profile_by_id(user_id: str) -> dict:
    data = call_model("instagram/v3/user-id-to-username", {"user_id": str(user_id).strip()})
    return {
        "user_id": data.get("id", user_id),
        "username": data.get("username"),
        "full_name": data.get("full_name"),
        "is_verified": data.get("is_verified"),
        "follower_count": data.get("follower_count"),
    }


def collect_follower_data(usernames: list) -> list:
    """收集一组用户名的粉丝数据。"""
    results = []
    for username in usernames:
        try:
            user_id = get_user_id_by_username(username)
            if not user_id:
                print(f"{username} 没有返回用户ID")
                continue
            profile = get_profile_by_id(user_id)
            results.append({
                "username": profile["username"] or username,
                "user_id": user_id,
                "follower_count": profile["follower_count"],
                "timestamp": datetime.now(timezone.utc).isoformat(),
            })
        except (requests.RequestException, RuntimeError) as e:
            print(f"获取 {username} 数据时出错: {e}")
    return results


def detect_changes(current: list, previous: list, threshold: float = 0.01) -> list:
    """检测粉丝数的显著变化(默认阈值:1%)。"""
    alerts = []
    prev_map = {item["username"]: item["follower_count"] for item in previous}

    for item in current:
        username = item["username"]
        old_count = prev_map.get(username)
        new_count = item["follower_count"]
        if not old_count or new_count is None:
            continue
        change_pct = (new_count - old_count) / old_count
        if abs(change_pct) >= threshold:
            alerts.append({
                "username": username,
                "old_count": old_count,
                "new_count": new_count,
                "change_pct": round(change_pct * 100, 2),
            })
    return alerts


# 运行追踪器
if __name__ == "__main__":
    current_data = collect_follower_data(TRACKED_ACCOUNTS)

    # 生产环境中,从数据库加载历史数据
    # previous_data = load_from_db()
    # alerts = detect_changes(current_data, previous_data)

    print(json.dumps(current_data, indent=2, ensure_ascii=False))

2026-10-04(UTC)运行时,追踪器共调用 8 次,总耗时 15.1 秒,其中每次 v3 ID → 资料调用耗时 2.5 到 3.2 秒。完整输出如下:

[
  {
    "username": "nike",
    "user_id": "13460080",
    "follower_count": 291055106,
    "timestamp": "2026-10-04T06:26:57.663460+00:00"
  },
  {
    "username": "adidas",
    "user_id": "20269764",
    "follower_count": 29735718,
    "timestamp": "2026-10-04T06:27:01.172656+00:00"
  },
  {
    "username": "puma",
    "user_id": "10145706",
    "follower_count": 12939660,
    "timestamp": "2026-10-04T06:27:04.949282+00:00"
  },
  {
    "username": "newbalance",
    "user_id": "204654945",
    "follower_count": 9343850,
    "timestamp": "2026-10-04T06:27:08.939316+00:00"
  }
]

这种模式适合作为定时任务,或作为更大型的使用 OpenAI SDK 构建的社交监控 Agent 的一部分。

批量处理:多用户名解析

当需要同时解析多个用户名时,添加基本的限流和错误处理。这里复用上文的 get_user_id_by_username 和 get_profile_by_id:

import time

def batch_resolve_usernames(usernames: list, delay: float = 0.5) -> dict:
    """批量解析用户名到用户ID,含限流处理。"""
    results = {}
    for username in usernames:
        try:
            user_id = get_user_id_by_username(username)
            if not user_id:
                results[username] = {"error": "no user_id returned"}
                continue
            profile = get_profile_by_id(user_id)
            results[username] = {
                "user_id": user_id,
                "full_name": profile["full_name"],
                "follower_count": profile["follower_count"],
            }
        except (requests.RequestException, RuntimeError) as e:
            results[username] = {"error": str(e)}
        time.sleep(delay)  # 遵守速率限制
    return results


# 解析10个账号
accounts = ["nike", "adidas", "puma", "newbalance", "underarmour",
            "reebok", "asics", "fila", "converse", "vans"]
resolved = batch_resolve_usernames(accounts)

for username, info in resolved.items():
    if "error" not in info:
        count = info["follower_count"]
        shown = f"{count:,}" if isinstance(count, int) else "n/a"
        print(f"@{username} → ID: {info['user_id']} ({shown} 粉丝)")

我在 2026-10-04(UTC)接在接口1、接口2的代码块后面运行了这段代码,前两段会先打印自己的几行。下面是批量循环打印的内容:

@nike → ID: 13460080 (291,055,093 粉丝)
@adidas → ID: 20269764 (29,735,717 粉丝)
@puma → ID: 10145706 (12,939,660 粉丝)
@newbalance → ID: 204654945 (9,343,851 粉丝)
@underarmour → ID: 5858873 (8,138,098 粉丝)
@reebok → ID: 186499819 (4,367,343 粉丝)
@asics → ID: 242236354 (1,508,211 粉丝)
@converse → ID: 6716197 (10,245,903 粉丝)
@vans → ID: 18919774 (15,655,816 粉丝)

10 个账号解析成功 9 个,每次 v3 ID → 资料调用耗时 2.5 到 2.9 秒。fila 没有出现,是因为 instagram/v3/user-id-by-username 返回了一个已完成的 run,但ID为空({"user_id": ""},run id 667dff6c-d73a-4678-afca-e1f6c6f37eec),于是 if not user_id 分支把它记成了错误;原因我没有深究。英文版的同一轮测试里第一次运行因为本地网络的连接重置而中断,except (requests.HTTPError, RuntimeError) 接不住这种异常,所以本文两个循环现在都捕获 requests.RequestException,它同时覆盖 HTTP 错误和连接错误。

结合其他社交平台API

SandBase 的优势之一是其统一的社交媒体数据处理方式。你可以将 Instagram 用户ID查询与其他平台的API结合使用,构建跨平台用户档案。

例如,如果你正在构建一个多平台网红数据库,可以:

  1. 通过 instagram/v3/user-id-by-username 解析 Instagram 用户名 → 用户ID
  2. 查询抖音用户搜索API,找到同一创作者在国内平台的账号
  3. 拉取 TikTok 个人资料数据,获取全球短视频平台信息
  4. 将所有数据合并为统一档案,每个平台使用各自的稳定ID

这种跨平台方法对处理社交媒体数据的 AI Agent 特别有用,Agent 需要在多个数据源之间建立一致的身份层。抖音这一侧可以看抖音用户搜索 API 教程。

错误处理最佳实践

下面的处理逻辑是通用的应用层做法,不是该端点的错误契约。代码之后列出了我实际观察到的状态码。

import time

def safe_lookup(username: str, retried: bool = False) -> str | None:
    """带基本 HTTP 错误处理的用户名查询。"""
    try:
        return get_user_id_by_username(username)
    except requests.HTTPError as e:
        status = e.response.status_code
        if status == 401:
            print("API Key 无效——请检查你的凭证")
        elif status == 429 and not retried:
            print("触发速率限制——等待后重试一次")
            time.sleep(60)
            return safe_lookup(username, retried=True)
        elif status in (500, 502, 503) and not retried:
            print(f"上游/服务端错误 {status}——重试一次")
            time.sleep(5)
            return safe_lookup(username, retried=True)
        elif status == 503:
            print(f"@{username} 再次返回上游错误——账号可能不存在,或上游暂时故障")
        else:
            print(f"未知错误: {e}")
    except RuntimeError as e:
        print(e)
    return None

我在 2026-10-01(UTC)调用 instagram/v3/user-id-by-username 时观察到:

  • 401:无效的 API Key 返回 HTTP 401,内容为 {"error": "invalid API key"}。
  • 503:上游失败以 HTTP 503 返回,带 error 信息、没有 run id。真实账号偶发这种情况(14 个账号的一轮里出现几次),重试通常能成功。不存在的用户名同样返回 HTTP 503,而不是 404,所以同一个用户名反复 503 可能意味着账号不存在。
  • 429:我没有触发速率限制;退避分支是通用做法。

2026-10-04(UTC)的 instagram/v3/user-id-to-username 也是同样的表现:对不存在的ID 99999999999999999 的调用全部返回 HTTP 503,没有 run id,报错为 upstream error 400: Request failed. Please retry.,并注明这次请求不收费。如何用 instagram/v1/user-info-by-id-v2 确认账号是否存在,见接口2。这次刷新调用了 70 次以上 Instagram 接口,同样没有触发速率限制。

生产环境使用建议

  1. 积极缓存:用户ID不会改变。一旦解析了用户名 → ID的映射,就存储到本地。
  2. 处理用户名变更:用户名可以修改,但ID是永久的。使用ID作为主键。
  3. 非高峰时段批量处理:如果需要解析数百个账号,在低流量时段运行批量任务。
  4. 监控使用量:在 SandBase 控制面板查看额度使用情况。
  5. 自己安排调度:这里的两个端点只是普通的读取调用。定时任务、webhook 和告警是你在自己的应用里围绕它们搭建的模式。

总结

在 Instagram 用户名和用户ID之间进行转换是几乎所有 Instagram 自动化工作流的基础步骤。SandBase 用两个接口完成这一步:

  • instagram/v3/user-id-by-username — 解析用户名到数字ID
  • instagram/v3/user-id-to-username — 解析ID回当前用户名 + 基础资料信息

如果 v3 对某个ID反复返回 503,可以用 instagram/v1/user-info-by-id-v2 确认账号是否存在。批量转换已存储的ID、以及完整的边界情况,见 Instagram ID 查用户名教程。

无论你是在构建粉丝追踪 Agent、社交媒体数据面板,还是跨平台网红数据库,这些接口都能提供你所需的稳定标识符来构建可靠的自动化系统。

准备开始了吗?注册 SandBase API Key,打开 user-id-by-username 和 user-id-to-username API 参考,然后尝试上面的示例。如需更高级的工作流,请查看我们关于使用 OpenAI SDK 构建社交监控 Agent 的指南。