문서
API 레퍼런스와 가이드: 인증, 오류 코드, 페이지네이션, 신선도, X 엔드포인트.
OpenAPI 1.0.0
빠른 시작
AI 에이전트
FetchPI는 AI 에이전트를 위해 만들어졌습니다. 카탈로그, 계약, 단계별 가이드는 모두 기계 판독 가능한 정적 파일이며 이 사이트와 같은 데이터에서 생성됩니다.
- /llms.txt — 에이전트용 사이트 색인: 사용 가능한 플랫폼과 문서·가격 위치.
- /SKILL.md — 에이전트 단계별 가이드: 카탈로그 → 스키마 → 호출 → 사용량, 과금 규칙 포함.
- /openapi.yaml — 공개 OpenAPI 서브셋: 모든 /v1 데이터 경로와 카탈로그. 관리·콘솔 영역은 미포함.
에이전트 워크플로: 먼저 카탈로그에서 가용성과 가격을 확인하고, 호출 전 스키마를 읽고, 요청마다 API 키 하나를 보내고, 반복 조회는 freshness=cache를 우선하며, 답을 얻으면 페이지 넘김을 멈춥니다.
인증
모든 /v1/* 엔드포인트는 HTTP Bearer Token으로 전송되는 API 키로 인증합니다. 키는 fp_live_… / fp_test_… 접두사를 사용합니다.
Authorization: Bearer fp_live_…시크릿은 비밀번호처럼 취급하세요. 생성 시 한 번만 표시됩니다. 유출이 의심되면 키를 폐기하고 새로 만드세요.
오류 코드
2xx가 아닌 모든 응답은 동일한 엔벨로프를 사용합니다. 안정적인 기계 판독 가능 코드를 가진 error 객체와, 지원팀 문의 시 인용할 request_id가 포함됩니다.
{
"error": {
"code": "NOT_FOUND",
"message": "API key not found."
},
"request_id": "req_01HTXQ8Z9HTQ"
}| 코드 | HTTP 상태 | 설명 | 주요 발생 상황 |
|---|---|---|---|
| UNAUTHENTICATED | 401 | API 키/세션이 없거나 유효하지 않습니다. | 데이터 API에 유효한 API 키가 없거나, 콘솔 세션이 없거나 만료되었습니다. |
| FORBIDDEN | 403 | 인증되었지만 이 키에는 해당 기능 사용 권한이 없습니다. | 키 ACL이 해당 기능을 허용하지 않거나, RBAC가 작업을 거부했거나, 워크스페이스 크레딧이 동결되었습니다(CREDITS_FROZEN). |
| NOT_FOUND | 404 | 대상 리소스가 존재하지 않거나 표시되지 않습니다. | 리소스가 존재하지 않거나 이 워크스페이스에 표시되지 않습니다(API 키, 데이터셋, 주문 번호 등). |
| DATA_NOT_FOUND | 404 | 사용 가능한 데이터가 없습니다 — 예: cache 모드에서 캐시된 엔티티가 없는 경우. | cache 모드에서 캐시된 데이터가 없거나 플랫폼 사용자를 알 수 없습니다. |
| METHOD_NOT_ALLOWED | — | 이 경로는 해당 HTTP 메서드를 지원하지 않습니다. | 기존 경로에 지원되지 않는 HTTP 메서드를 사용했습니다(예: GET 전용 엔드포인트에 POST). |
| VALIDATION | 400 | 요청 파라미터 검증에 실패했습니다. error.details.fields를 참고하세요. | 요청 파라미터 검증에 실패했습니다: limit 범위 초과, 잘못된 cursor, ID 형식 오류 등. error.details.fields를 참고하세요. |
| CONFLICT | 409 | 상태 충돌 — 예: 리소스 중복 또는 멱등 키 재사용. | 현재 상태와 충돌합니다. 예: 리소스 중복 또는 멱등 키 재사용. |
| RATE_LIMIT_EXCEEDED | 429 | 요청이 너무 많습니다. 모든 처리율 제한 게이트에 통일된 429 코드입니다(details.scope가 게이트를 나타냄). Retry-After 이후 재시도하세요. | 요청 제한 게이트 중 하나에 거부되었습니다: 키 분 윈도우, 워크스페이스 시간 윈도우, 키 추가 시간 상한 또는 RPS 버킷(details.scope가 게이트를 나타냄). Retry-After 이후 재시도하세요. |
| RATE_LIMITER_UNAVAILABLE | 503 | 레이트 리밋 백엔드를 일시적으로 사용할 수 없습니다. 요청은 거부되었지만 쿼터는 소모되지 않았습니다. Retry-After에 따라 나중에 다시 시도하세요. | 공유 요청 제한 저장소(Redis)가 일시적으로 사용 불가합니다. fail-closed로 거부되며 쿼터를 소모하지 않습니다. |
| REGISTRATION_DISABLED | 403 | 직접 가입은 종료되었습니다 — Google 또는 GitHub 로그인을 이용하세요. | 이 배포에서는 직접 가입이 종료되었습니다. Google/GitHub 로그인을 이용하세요. |
| OAUTH_PROVIDER_UNAVAILABLE | 404 | 이 로그인 공급자는 현재 사용할 수 없습니다. 다른 공급자를 시도하세요. | 이 로그인 공급자는 배포에 구성되지 않았거나 일시적으로 사용할 수 없습니다. |
| PASSWORD_CHANGE_REQUIRED | — | 비밀번호가 운영자에 의해 초기화되었습니다. 계속하려면 비밀번호를 변경하세요. | 운영자가 비밀번호를 재설정했습니다. 변경할 때까지 세션을 계속할 수 없습니다. |
| INSUFFICIENT_CREDITS | 402 | 크레딧이 부족합니다. 충전 후 다시 시도해 주세요. | 워크스페이스 크레딧 잔액이 요청 가격보다 적습니다. details에 필요/보유 크레딧이 담깁니다. |
| CREDITS_FROZEN | 403 | 이 워크스페이스의 크레딧은 동결되어 있습니다. 충전은 가능하지만 해제 전까지 데이터 API 요청은 거부됩니다. | 결제 롤백(딥 리오그)으로 크레딧이 동결되었습니다: 충전은 가능하지만 데이터 API 요청은 거부됩니다. |
| NOT_IMPLEMENTED | 501 | 예약된 기능이지만 V1에서는 구현되지 않았습니다. | 해당 기능은 예약되어 있지만 V1에서는 구현되지 않았습니다. |
| UPSTREAM_ERROR | 502 | 사용 가능한 모든 업스트림 데이터 경로가 실패했습니다. 이 요청은 과금되지 않습니다. | 사용 가능한 모든 업스트림 데이터 경로가 실패했습니다. 이 요청은 과금되지 않습니다. |
| INTERNAL | default | 예기치 않은 서버 오류입니다. 보고 시 request_id를 알려주세요. | 예기치 않은 서버 오류입니다. 보고 시 request_id를 알려주세요. |
| PAYMENT_AMOUNT_UNAVAILABLE | 402 | 요청한 충전 금액의 슬롯이 모두 찼습니다. 다른 금액을 선택하거나 나중에 다시 시도하세요. | 요청한 충전 금액의 슬롯이 모두 찼습니다. 다른 금액을 선택하거나 나중에 다시 시도하세요. |
| PAYMENT_NETWORK_DISABLED | 400 | 선택한 네트워크/자산은 현재 주문을 받고 있지 않습니다. | 선택한 네트워크/자산은 현재 충전 주문을 받지 않습니다. |
| PAYMENT_ORDER_EXPIRED | — | 결제 주문이 결제 기간을 지나 더 이상 결제할 수 없습니다. 새 주문을 생성하세요. | 주문이 30분 결제 기간을 지나 더 이상 결제할 수 없습니다. 새 주문을 생성하세요. |
| PAYMENT_PENDING_LIMIT | 409 | 워크스페이스의 대기 중 결제 주문이 상한에 도달했습니다. 기존 주문을 완료하거나 만료를 기다리세요. | 대기 중인 주문 수가 상한에 도달했습니다. 완료하거나 만료를 기다려 주세요. |
| PAYMENT_DUPLICATE_RATE | 409 | 이 멱등 키는 다른 주문 조건으로 이미 사용되었습니다. 원래 주문을 사용하거나 새 멱등 키를 지정하세요. | 멱등 키가 다른 주문 조건으로 사용되었습니다. 원래 주문을 재사용하거나 새 키를 사용하세요. |
| PAYMENT_RATE_STALE | 409 | 이 통화의 시세가 오래되어 충전 주문이 일시적으로 거부되었습니다. 잠시 후 다시 시도해 주세요. | 환율 데이터가 오래되어 새 충전 주문이 일시적으로 거부됩니다. 나중에 다시 시도하세요. |
| DATASET_NOT_AVAILABLE | 409 | 이 데이터셋은 현재 주문을 받을 수 없습니다——수집 중이거나 일시 중지(컴플라이언스) 상태입니다. | 이 데이터셋은 수집 중이거나 일시 중지(컴플라이언스) 상태로 주문을 받지 않습니다. |
| DATASET_DUPLICATE_ORDER | 409 | 이 멱등 키는 다른 데이터셋 주문에 이미 사용되었습니다. 원래 주문을 재사용하거나 새 키를 지정하세요. | 멱등 키가 다른 데이터셋 주문으로 사용되었습니다. 원래 주문을 재사용하거나 새 키를 사용하세요. |
| PAYMENT_PROVIDER_DISABLED | 400 | 이 결제 프로바이더는 비활성화되었거나 구성되지 않았습니다. | 결제 공급자가 비활성화되었거나 구성되지 않았습니다. |
| CUSTOM_REQUEST_LIMIT_EXCEEDED | 403 | 맞춤 서비스 요청 한도에 도달했습니다. 자연월별 진행 중인 맞춤 데이터 요청은 최대 5건까지입니다. 다음 달에 다시 시도해 주세요. | 맞춤 서비스 월간 한도 초과——자연월 기준 진행 중인 맞춤 데이터 요청이 5건을 초과했습니다(업무 할당량이며 429 Rate Limit이 아닙니다). |
| SITE_BUILD_NOT_CONFIGURED | — | 사이트 재빌드 웹훅이 구성되어 있지 않습니다. | 관리 콘솔에서 사이트 재빌드를 요청했지만 서버에 재빌드 웹훅이 구성되어 있지 않습니다. |
페이지네이션
목록 엔드포인트는 커서 페이지네이션을 사용합니다. limit(1–100, 기본 20)과 cursor를 전달하면, 응답의 next_cursor가 다음 페이지를 가리킵니다.
GET /v1/x/users/newdev/posts?limit=20&cursor=eyJpZCI6MTAwfQ목록이 끝나면 next_cursor는 null(또는 없음)입니다. 커서는 불투명(opaque)합니다 — 파싱하거나 데이터 소스 변경 후에 의존하지 마세요.
신선도
모든 데이터 엔드포인트는 freshness(cache | default | live)와 max_age(초)를 받습니다. freshness는 max_age보다, max_age는 플랫폼 TTL보다 우선하며 기본값은 default입니다.
freshness=cache
업스트림에 절대 접근하지 않습니다. 캐시된 데이터가 없으면 404 DATA_NOT_FOUND를 반환합니다.
freshness=default
플랫폼이 TTL과 소스 정책에 따라 결정합니다 — 캐시, 저장 또는 새로 획득한 데이터.
freshness=live
새로 가져오기를 요청하며 추가 비용이 발생할 수 있습니다(라이브 배율). 실패 시 502 UPSTREAM_ERROR를 반환합니다 — 가짜 최신 데이터는 절대 반환하지 않습니다.
모든 데이터 응답은 meta.freshness에 실제 동작(유효 모드, 데이터 나이, 제공 계층)을 보고합니다. 아래 '응답 메타데이터'를 참고하세요.
요청 제한
요청은 API 키(및 Workspace) 단위로 제한됩니다. 한도를 초과하면 초 단위의 Retry-After 헤더와 함께 429 RATE_LIMITED가 반환됩니다.
키별 요청 한도와 월간 소비 한도는 콘솔에서 각 키에 대해 설정할 수 있습니다.
응답 메타데이터
모든 /v1/* 성공 응답에는 meta.request_id와 함께 신선도 및 과금 메타데이터가 포함됩니다:
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
| mode | cache | default | live | 필수 | Effective mode after merging param > max_age > source policy (D-004). |
| age_seconds | integer | null | 선택 | Age of served data; null when unknown. |
| source_layer | cache | db | upstream | 필수 | Which layer served the response (PRD §10). |
| stale | boolean | 선택 | True when stale data was served under stale_if_error / SWR (D-004). |
| billing.amount_credits | integer | 필수 | Micro-USD (1e-6 USD) actually charged for this request. |
| billing.cache_hit | boolean | 필수 | — |
필드 비고는 계약 영문 원문으로 표시됩니다.
API 엔드포인트
28개 플랫폼 전체의 176개 문서화된 엔드포인트(파라미터, 응답, 샘플 페이로드 포함, 플랫폼별 그룹화). 정규화 스키마는 각 제품 페이지에서 확인할 수 있습니다.
/v1/x/users/{username}x.profileX 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | X 핸들(맨 앞 @ 제외). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 404NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/users/newdev"응답 예제
{
"data": {
"id": "2244994945",
"platform": "x",
"type": "profile",
"username": "newdev",
"display_name": "New Dev",
"description": "Building data APIs.",
"url": "https://x.com/newdev",
"profile_image_url": "https://cdn.example.com/avatar/newdev.jpg",
"banner_image_url": null,
"location": "Berlin",
"verified": false,
"created_at": "2019-04-01T10:15:00Z",
"metrics": {
"followers": 1204,
"following": 312,
"posts": 870,
"likes": 15200
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 120,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/x/users/{username}/postsx.user_postsX 사용자 게시물
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | X 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/users/newdev/posts"응답 예제
{
"data": [
{
"id": "1842951234567890123",
"platform": "x",
"type": "post",
"author": {
"id": "2244994945",
"username": "newdev",
"display_name": "New Dev",
"verified": false
},
"text": "One API for internet data.",
"lang": "en",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 128,
"reposts": 12,
"replies": 4,
"quotes": 1,
"views": 5230
},
"in_reply_to": null,
"attachments": [],
"fetched_at": "2026-09-18T09:00:00Z"
},
{
"id": "1842909876543210987",
"platform": "x",
"type": "post",
"author": {
"id": "2244994945",
"username": "newdev",
"display_name": "New Dev",
"verified": false
},
"text": "Freshness modes explained.",
"lang": "en",
"created_at": "2026-09-16T08:00:00Z",
"metrics": {
"likes": 64,
"reposts": 3,
"replies": 1,
"quotes": 0,
"views": 1200
},
"in_reply_to": null,
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/p/1.jpg",
"width": 1024,
"height": 512
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": "eyJpZCI6IjE4MjkwMDAwMDAwMDAwMDAwIn0",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/x/posts/{id}x.postX 게시물 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | X 게시물 id(플랫폼 네이티브 숫자 문자열). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/posts/1842951234567890123"응답 예제
{
"data": {
"id": "1842951234567890123",
"platform": "x",
"type": "post",
"author": {
"id": "2244994945",
"username": "newdev",
"display_name": "New Dev",
"verified": false
},
"text": "One API for internet data.",
"lang": "en",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 128,
"reposts": 12,
"replies": 4,
"quotes": 1,
"views": 5230
},
"in_reply_to": null,
"attachments": [],
"fetched_at": "2026-09-18T07:30:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 3600,
"source_layer": "cache",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": true
}
}
}/v1/x/posts/{id}/commentsx.commentsX 게시물 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | X 게시물 id(플랫폼 네이티브 숫자 문자열). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "1842951999999999999",
"platform": "x",
"type": "comment",
"post_id": "1842951234567890123",
"author": {
"id": "1122334455",
"username": "curiouscat",
"display_name": "Curious Cat",
"verified": false
},
"text": "Great post!",
"created_at": "2026-09-17T13:00:00Z",
"metrics": {
"likes": 3
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 600,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/x/search/postsx.search_postsX 게시물 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "1841001111111111111",
"platform": "x",
"type": "post",
"author": {
"id": "5566778899",
"username": "datafan",
"display_name": "Data Fan",
"verified": true
},
"text": "fetchpi launch day!",
"lang": "en",
"created_at": "2026-09-15T10:00:00Z",
"metrics": {
"likes": 9,
"reposts": 2,
"replies": 0,
"quotes": 0,
"views": 340
},
"in_reply_to": null,
"attachments": [],
"fetched_at": "2026-09-18T09:05:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "live",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/x/users/{username}/followersx.user_followers팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | X 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/users/newdev/followers"응답 예제
{
"data": [
{
"id": "2244994945",
"platform": "x",
"type": "profile",
"username": "newdev",
"display_name": "New Dev",
"description": "Building data APIs.",
"url": "https://x.com/newdev",
"profile_image_url": "https://cdn.example.com/avatar/newdev.jpg",
"banner_image_url": null,
"location": "Berlin",
"verified": false,
"created_at": "2019-04-01T10:15:00Z",
"metrics": {
"followers": 1204,
"following": 312,
"posts": 870,
"likes": 15200
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/x/users/{username}/followingx.user_following팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | X 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/users/newdev/following"응답 예제
{
"data": [
{
"id": "2244994945",
"platform": "x",
"type": "profile",
"username": "newdev",
"display_name": "New Dev",
"description": "Building data APIs.",
"url": "https://x.com/newdev",
"profile_image_url": "https://cdn.example.com/avatar/newdev.jpg",
"banner_image_url": null,
"location": "Berlin",
"verified": false,
"created_at": "2019-04-01T10:15:00Z",
"metrics": {
"followers": 1204,
"following": 312,
"posts": 870,
"likes": 15200
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/x/users/{username}/repliesx.user_replies사용자 답글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | X 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/users/newdev/replies"응답 예제
{
"data": [
{
"id": "1842951234567890123",
"platform": "x",
"type": "post",
"author": {
"id": "2244994945",
"username": "newdev",
"display_name": "New Dev",
"verified": false
},
"text": "One API for internet data.",
"lang": "en",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 128,
"reposts": 12,
"replies": 4,
"quotes": 1,
"views": 5230
},
"in_reply_to": null,
"attachments": [],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/x/users/{username}/mediax.user_media사용자 미디어 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | X 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/users/newdev/media"응답 예제
{
"data": [
{
"id": "1842951234567890123",
"platform": "x",
"type": "post",
"author": {
"id": "2244994945",
"username": "newdev",
"display_name": "New Dev",
"verified": false
},
"text": "One API for internet data.",
"lang": "en",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 128,
"reposts": 12,
"replies": 4,
"quotes": 1,
"views": 5230
},
"in_reply_to": null,
"attachments": [],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/x/trendsx.trends트렌드 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 선택 | string | 트렌드의 국가(선택). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/x/trends?q=fetchpi"응답 예제
{
"data": {
"platform": "x",
"type": "trends",
"country": "united states",
"trends": [
{
"name": "#FetchPI",
"post_count": 52341
},
{
"name": "Normalized Entities",
"post_count": 8800,
"url": "https://x.com/search?q=normalized"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/tiktok/users/{username}tiktok.profileTikTok 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | TikTok uniqueId 핸들(맨 앞 @ 제외). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/users/newdev"응답 예제
{
"data": {
"id": "7004994945112",
"platform": "tiktok",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Short videos about data APIs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": "2017-10-01T00:00:00Z",
"metrics": {
"followers": 88230,
"following": 412,
"posts": 356,
"likes": 2140000
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 120,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/tiktok/users/{username}/poststiktok.user_postsTikTok 사용자 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | TikTok uniqueId 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/users/newdev/posts"응답 예제
{
"data": [
{
"id": "7410886000000000001",
"platform": "tiktok",
"type": "post",
"author": {
"id": "7004994945112",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "One API for every platform.",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 864,
"comments": 42,
"shares": 87,
"collects": 310,
"views": 154203
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover.jpeg",
"duration_ms": 34567
}
],
"fetched_at": "2026-09-18T09:00:00Z"
},
{
"id": "7410886000000000002",
"platform": "tiktok",
"type": "post",
"author": {
"id": "7004994945112",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "Photo dump from launch week.",
"created_at": "2026-09-16T08:00:00Z",
"metrics": {
"likes": 412,
"comments": 18,
"shares": 9,
"collects": 77,
"views": 52100
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/p/1.jpeg"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiIxNzU4MzI2NDAwIn0",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/tiktok/posts/{id}tiktok.postTikTok 동영상 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | TikTok 동영상 id(플랫폼 네이티브 숫자 문자열). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/posts/1842951234567890123"응답 예제
{
"data": {
"id": "7410886000000000001",
"platform": "tiktok",
"type": "post",
"author": {
"id": "7004994945112",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "One API for every platform.",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 864,
"comments": 42,
"shares": 87,
"collects": 310,
"views": 154203
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover.jpeg",
"duration_ms": 34567
}
],
"fetched_at": "2026-09-18T07:30:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 3600,
"source_layer": "cache",
"stale": false
},
"billing": {
"amount_credits": 0,
"cache_hit": true
}
}
}/v1/tiktok/posts/{id}/commentstiktok.commentsTikTok 동영상 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | TikTok 동영상 id(플랫폼 네이티브 숫자 문자열). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "7411111111000000001",
"platform": "tiktok",
"type": "comment",
"post_id": "7410886000000000001",
"author": {
"id": "3311223344",
"username": "curiousfan",
"display_name": "Curious Fan",
"verified": false
},
"text": "This is the future of data APIs.",
"created_at": "2026-09-17T13:00:00Z",
"metrics": {
"likes": 12,
"replies": 2
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 600,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/tiktok/search/poststiktok.search_postsTikTok 동영상 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "7410999000000000001",
"platform": "tiktok",
"type": "post",
"author": {
"id": "5566778899001",
"username": "datafan",
"display_name": "Data Fan",
"verified": true
},
"text": "normalized entities for every feed!",
"created_at": "2026-09-15T10:00:00Z",
"metrics": {
"likes": 91,
"comments": 3,
"shares": 12,
"collects": 24,
"views": 40320
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/s1.jpeg",
"duration_ms": 21000
}
],
"fetched_at": "2026-09-18T09:05:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "live",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/tiktok/posts/{id}/comments/{comment_id}/repliestiktok.comment_replies댓글 답글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | TikTok 동영상 id(플랫폼 네이티브 숫자 문자열). |
| comment_id | path | 필수 | string | 답글을 나열할 부모 댓글 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/posts/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "7411111111000000001",
"platform": "tiktok",
"type": "comment",
"post_id": "7410886000000000001",
"author": {
"id": "3311223344",
"username": "curiousfan",
"display_name": "Curious Fan",
"verified": false
},
"text": "This is the future of data APIs.",
"created_at": "2026-09-17T13:00:00Z",
"metrics": {
"likes": 12,
"replies": 2
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/tiktok/users/{username}/followerstiktok.user_followers팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | TikTok uniqueId 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/users/newdev/followers"응답 예제
{
"data": [
{
"id": "7004994945112",
"platform": "tiktok",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Short videos about data APIs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": "2017-10-01T00:00:00Z",
"metrics": {
"followers": 88230,
"following": 412,
"posts": 356,
"likes": 2140000
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/tiktok/users/{username}/followingtiktok.user_following팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | TikTok uniqueId 핸들(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/users/newdev/following"응답 예제
{
"data": [
{
"id": "7004994945112",
"platform": "tiktok",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Short videos about data APIs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": "2017-10-01T00:00:00Z",
"metrics": {
"followers": 88230,
"following": 412,
"posts": 356,
"likes": 2140000
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/tiktok/search/userstiktok.search_users사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/search/users?q=fetchpi"응답 예제
{
"query": "data api",
"data": [
{
"id": "7004994945112",
"platform": "tiktok",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Short videos about data APIs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": "2017-10-01T00:00:00Z",
"metrics": {
"followers": 88230,
"following": 412,
"posts": 356,
"likes": 2140000
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/tiktok/hashtags/{tag}tiktok.hashtag해시태그 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| tag | path | 필수 | string | TikTok 해시태그 이름(# 제외). 게시물 목록에서는 upstream 챌린지 id를 그대로 전달합니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/hashtags/trending"응답 예제
{
"data": {
"id": "1600000000000000001",
"platform": "tiktok",
"type": "hashtag",
"name": "fetchpi",
"description": "One API for every platform feed.",
"cover_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/hashtag/fetchpi.jpeg",
"metrics": {
"views": 4820000000
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/tiktok/hashtags/{tag}/poststiktok.hashtag_posts해시태그 동영상 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| tag | path | 필수 | string | TikTok 해시태그 이름(# 제외). 게시물 목록에서는 upstream 챌린지 id를 그대로 전달합니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/hashtags/trending/posts"응답 예제
{
"data": [
{
"id": "7410886000000000001",
"platform": "tiktok",
"type": "post",
"author": {
"id": "7004994945112",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "One API for every platform.",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 864,
"comments": 42,
"shares": 87,
"collects": 310,
"views": 154203
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover.jpeg",
"duration_ms": 34567
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/tiktok/musics/{id}tiktok.music음악 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | TikTok 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id, /download는 동영상 id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/musics/1842951234567890123"응답 예제
{
"data": {
"id": "7416880000000000001",
"platform": "tiktok",
"type": "music",
"title": "Sim Song (prod. Creator Dev)",
"author_name": "Creator Dev",
"duration_ms": 34567,
"cover_image_url": "https://p16-sign-sg.tiktokcdn.com/aweme/music/7416880000000000001.jpeg",
"metrics": {
"videos": 128000
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/tiktok/live/{id}tiktok.live_room라이브 룸 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | TikTok 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id, /download는 동영상 id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/live/1842951234567890123"응답 예제
{
"data": {
"id": "8800000000000000001",
"platform": "tiktok",
"type": "live_room",
"title": "Live: normalized entities Q&A",
"username": "creatordev",
"display_name": "Creator Dev",
"status": "LIVE",
"viewer_count": 2345,
"started_at": "2026-09-20T00:00:00Z",
"cover_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/live/8800000000000000001.jpeg",
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/tiktok/search/livetiktok.live_search라이브 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/search/live?q=fetchpi"응답 예제
{
"query": "data talk",
"data": [
{
"id": "8800000000000000001",
"platform": "tiktok",
"type": "live_room",
"title": "Live: normalized entities Q&A",
"username": "creatordev",
"display_name": "Creator Dev",
"status": "LIVE",
"viewer_count": 2345,
"started_at": "2026-09-20T00:00:00Z",
"cover_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/live/8800000000000000001.jpeg",
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/tiktok/homefeedtiktok.homefeed홈 피드
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/homefeed"응답 예제
{
"data": [
{
"id": "7410886000000000001",
"platform": "tiktok",
"type": "post",
"author": {
"id": "7004994945112",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "One API for every platform.",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 864,
"comments": 42,
"shares": 87,
"collects": 310,
"views": 154203
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover.jpeg",
"duration_ms": 34567
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/tiktok/download/{id}tiktok.download다운로드 해석
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | TikTok 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id, /download는 동영상 id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/tiktok/download/1842951234567890123"응답 예제
{
"data": {
"id": "7412050000000000001",
"platform": "tiktok",
"type": "download",
"play_url": "https://v16-webapp.tiktok.com/aweme/v1/play/?video_id=7412050000000000001&no-watermark=1",
"preview_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/cover/7412050000000000001.jpeg",
"duration_ms": 34567,
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/ig/users/{username}ig.profileInstagram 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Instagram 사용자 이름(맨 앞 @ 제외). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/users/newdev"응답 예제
{
"data": {
"id": "1295448945",
"platform": "instagram",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Photo dumps and API graphs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": null,
"metrics": {
"followers": 51230,
"following": 310,
"posts": 862
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 120,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/ig/users/{username}/postsig.user_postsInstagram 사용자 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Instagram 사용자 이름(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/users/newdev/posts"응답 예제
{
"data": [
{
"id": "CwxOne00001",
"platform": "instagram",
"type": "post",
"author": {
"id": "1295448945",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "Carousel dump",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 1204,
"comments": 36,
"views": 0
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/1.jpg"
},
{
"type": "photo",
"url": "https://cdn.example.com/2.jpg"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
},
{
"id": "CwxTwo00002",
"platform": "instagram",
"type": "post",
"author": {
"id": "1295448945",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "Reel day",
"created_at": "2026-09-16T08:00:00Z",
"metrics": {
"likes": 640,
"comments": 21,
"views": 60110
},
"attachments": [
{
"type": "video",
"url": "https://cdn.example.com/reel2.mp4",
"duration_ms": 30100
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": "QVFBQ2daOTItcGxhdGZvcm0",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/ig/posts/{id}ig.postInstagram 게시물 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Instagram 게시물 SHORTCODE(/p/{code} 어드레싱 키). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/posts/1842951234567890123"응답 예제
{
"data": {
"id": "Creel00001",
"platform": "instagram",
"type": "post",
"author": {
"id": "1295448945",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "Reel day",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 1204,
"comments": 36,
"views": 88231
},
"attachments": [
{
"type": "video",
"url": "https://cdn.example.com/reel.mp4",
"duration_ms": 32500
}
],
"fetched_at": "2026-09-18T07:30:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 3600,
"source_layer": "cache",
"stale": false
},
"billing": {
"amount_credits": 0,
"cache_hit": true
}
}
}/v1/ig/posts/{id}/commentsig.commentsInstagram 게시물 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Instagram 게시물 SHORTCODE(/p/{code} 어드레싱 키). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "17990000000000001",
"platform": "instagram",
"type": "comment",
"post_id": "CwxOne00001",
"author": {
"id": "8811223344",
"username": "curiousfan",
"display_name": "Curious Fan",
"verified": false
},
"text": "Clean normalized shape!",
"created_at": "2026-09-17T13:00:00Z",
"metrics": {
"likes": 5
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 600,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/ig/search/postsig.search_postsInstagram 게시물 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "Creel00001",
"platform": "instagram",
"type": "post",
"author": {
"id": "5566778899001",
"username": "datafan",
"display_name": "Data Fan",
"verified": true
},
"text": "search hit one",
"created_at": "2026-09-15T10:00:00Z",
"metrics": {
"likes": 341,
"comments": 12,
"views": 88231
},
"attachments": [
{
"type": "video",
"url": "https://cdn.example.com/reel1.mp4",
"duration_ms": 32500
}
],
"fetched_at": "2026-09-18T09:05:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "live",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/ig/posts/{id}/comments/{comment_id}/repliesig.comment_replies댓글 답글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Instagram 게시물 SHORTCODE(/p/{code} 어드레싱 키). |
| comment_id | path | 필수 | string | 답글을 나열할 부모 댓글 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/posts/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "17990000000000001",
"platform": "instagram",
"type": "comment",
"post_id": "CwxOne00001",
"author": {
"id": "8811223344",
"username": "curiousfan",
"display_name": "Curious Fan",
"verified": false
},
"text": "Clean normalized shape!",
"created_at": "2026-09-17T13:00:00Z",
"metrics": {
"likes": 5
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/ig/users/{username}/followersig.user_followers팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Instagram 사용자 이름(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/users/newdev/followers"응답 예제
{
"data": [
{
"id": "1295448945",
"platform": "instagram",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Photo dumps and API graphs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": null,
"metrics": {
"followers": 51230,
"following": 310,
"posts": 862
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/ig/users/{username}/followingig.user_following팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Instagram 사용자 이름(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/users/newdev/following"응답 예제
{
"data": [
{
"id": "1295448945",
"platform": "instagram",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Photo dumps and API graphs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": null,
"metrics": {
"followers": 51230,
"following": 310,
"posts": 862
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/ig/search/usersig.search_users사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/search/users?q=fetchpi"응답 예제
{
"query": "data api",
"data": [
{
"id": "1295448945",
"platform": "instagram",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Photo dumps and API graphs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": null,
"metrics": {
"followers": 51230,
"following": 310,
"posts": 862
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/ig/users/{username}/storiesig.stories스토리 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Instagram 사용자 이름(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/users/newdev/stories"응답 예제
{
"data": [
{
"id": "CwxOne00001",
"platform": "instagram",
"type": "post",
"author": {
"id": "1295448945",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"text": "Carousel dump #1",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 1204,
"comments": 36,
"views": 0
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/1.jpg"
},
{
"type": "photo",
"url": "https://cdn.example.com/2.jpg"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/ig/users/{username}/highlightsig.highlights하이라이트 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Instagram 사용자 이름(맨 앞 @ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/users/newdev/highlights"응답 예제
{
"data": [
{
"id": "highlight_launch",
"platform": "instagram",
"type": "highlight",
"title": "Launch Week",
"username": "creatordev",
"cover_image_url": "https://scontent.cdninstagram.com/hl-launch.jpg",
"media_count": 3,
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/ig/posts/{id}/likersig.post_likers게시물 좋아요 사용자
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Instagram 게시물 SHORTCODE(/p/{code} 어드레싱 키). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/ig/posts/1842951234567890123/likers"응답 예제
{
"data": [
{
"id": "1295448945",
"platform": "instagram",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Photo dumps and API graphs.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
"verified": true,
"is_private": false,
"created_at": null,
"metrics": {
"followers": 51230,
"following": 310,
"posts": 862
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/xhs/users/{username}xhs.profile샤오홍슈 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 샤오홍슈 사용자 id——업스트림은 숫자 사용자 id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자).
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/users/newdev"응답 예제
{
"data": {
"id": "66f2a1de000000001e0167a1",
"platform": "xiaohongshu",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Notes about data APIs.",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"created_at": null,
"metrics": {
"followers": 51230,
"following": 310,
"posts": 862,
"likes": 2140000
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 120,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/xhs/users/{username}/postsxhs.user_posts샤오홍슈 사용자 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 샤오홍슈 사용자 id——업스트림은 숫자 사용자 id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/users/newdev/posts"응답 예제
{
"data": [
{
"id": "66f2b1de000000001f0167a1",
"platform": "xiaohongshu",
"type": "post",
"author": null,
"title": "First note on the platform.",
"text": null,
"created_at": null,
"metrics": {
"likes": 512,
"collects": 0,
"comments": 0,
"shares": 0
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/n1-cover.jpg"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
},
{
"id": "66f2b1de000000001f0167a2",
"platform": "xiaohongshu",
"type": "post",
"author": null,
"title": "Freshness modes, explained in 30s.",
"text": null,
"created_at": null,
"metrics": {
"likes": 512,
"collects": 0,
"comments": 0,
"shares": 0
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/n2-cover.jpg"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiI2NmYyYjFkZTAwIn0",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/xhs/posts/{id}xhs.post샤오홍슈 게시물 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 샤오홍슈 노트 id. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/posts/1842951234567890123"응답 예제
{
"data": {
"id": "66f2b1de000000001f0167a1",
"platform": "xiaohongshu",
"type": "post",
"author": {
"id": "66f2a1de000000001e0167a1",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"title": "One API for every feed.",
"text": "One API for every platform.",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 1204,
"collects": 310,
"comments": 42,
"shares": 87
},
"attachments": [
{
"type": "video",
"url": "https://cdn.example.com/note.mp4",
"preview_image_url": "https://cdn.example.com/note-cover.jpg"
}
],
"fetched_at": "2026-09-18T07:30:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 3600,
"source_layer": "cache",
"stale": false
},
"billing": {
"amount_credits": 0,
"cache_hit": true
}
}
}/v1/xhs/posts/{id}/commentsxhs.comments샤오홍슈 게시물 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 샤오홍슈 노트 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "66f3a1de000000001f0267c1",
"platform": "xiaohongshu",
"type": "comment",
"post_id": "66f2b1de000000001f0167a1",
"author": {
"id": "66f1a1de000000001f0167d1",
"username": "curiousfan",
"display_name": "Curious Fan",
"verified": false
},
"text": "This is the future of data APIs.",
"created_at": "2026-09-17T13:06:40Z",
"metrics": {
"likes": 12,
"replies": 2
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 600,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/xhs/search/postsxhs.search_posts샤오홍슈 게시물 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "66f2c1de000000001f0167b1",
"platform": "xiaohongshu",
"type": "post",
"author": null,
"title": "search hit one",
"text": null,
"created_at": null,
"metrics": {
"likes": 512,
"collects": 0,
"comments": 0,
"shares": 0
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/s1-cover.jpg"
}
],
"fetched_at": "2026-09-18T09:05:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "live",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/xhs/posts/{id}/comments/{comment_id}/repliesxhs.comment_replies댓글 답글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | TikTok 동영상 id(플랫폼 네이티브 숫자 문자열). |
| comment_id | path | 필수 | string | 대댓글을 나열할 부모 댓글 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/posts/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "66f3a1de000000001f0267c1",
"platform": "xiaohongshu",
"type": "comment",
"post_id": "66f2b1de000000001f0167a1",
"author": {
"id": "66f1a1de000000001f0167d1",
"username": "curiousfan",
"display_name": "Curious Fan",
"verified": false
},
"text": "This is the future of data APIs.",
"created_at": "2026-09-17T13:06:40Z",
"metrics": {
"likes": 12,
"replies": 2
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/xhs/search/usersxhs.search_users사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/search/users?q=fetchpi"응답 예제
{
"query": "data api",
"data": [
{
"id": "66f2a1de000000001e0167a1",
"platform": "xiaohongshu",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Notes about data APIs.",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"created_at": null,
"metrics": {
"followers": 51230,
"following": 310,
"posts": 862,
"likes": 2140000
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/xhs/homefeedxhs.homefeed홈 피드
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xhs/homefeed"응답 예제
{
"data": [
{
"id": "66f2b1de000000001f0167a1",
"platform": "xiaohongshu",
"type": "post",
"author": {
"id": "66f2a1de000000001e0167a1",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"title": "One API for every feed.",
"text": "One API for every platform.",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 1204,
"collects": 310,
"comments": 42,
"shares": 87
},
"attachments": [
{
"type": "video",
"url": "https://cdn.example.com/note.mp4",
"preview_image_url": "https://cdn.example.com/note-cover.jpg"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/youtube/users/{username}youtube.profileYouTube 채널 프로필(채널이 사용자)
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | YouTube 채널 id(UC…)——채널이 곧 플랫폼 사용자입니다. 업스트림은 채널 id로 지정하므로 값은 그대로 전달됩니다(핸들 허용은 upstream 조정 대기 항목). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 채널).
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/youtube/users/newdev"응답 예제
{
"data": {
"id": "UCsim0000000000000000777",
"platform": "youtube",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Videos about data APIs.",
"url": "https://www.youtube.com/@creatordev",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"created_at": "2019-04-01T10:15:00Z",
"metrics": {
"subscribers": 51230,
"views": 19824567,
"posts": 862
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 120,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/youtube/users/{username}/postsyoutube.user_postsYouTube 채널 동영상 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | YouTube 채널 id(UC…)——채널이 곧 플랫폼 사용자입니다. 업스트림은 채널 id로 지정하므로 값은 그대로 전달됩니다(핸들 허용은 upstream 조정 대기 항목). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 채널입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/youtube/users/newdev/posts"응답 예제
{
"data": [
{
"id": "wSimVideo0001",
"platform": "youtube",
"type": "post",
"author": null,
"title": "First video on the platform.",
"text": null,
"created_at": "2026-09-16T08:00:00Z",
"metrics": {
"views": 0,
"likes": 0,
"comments": 0
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/t1.jpg",
"duration_ms": 30000
}
],
"fetched_at": "2026-09-18T09:00:00Z"
},
{
"id": "wSimVideo0002",
"platform": "youtube",
"type": "post",
"author": null,
"title": "Freshness modes, explained in 30s.",
"text": null,
"created_at": "2026-09-15T08:00:00Z",
"metrics": {
"views": 52100,
"likes": 0,
"comments": 0
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/t2.jpg",
"duration_ms": 30000
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiJDQlFTRCJ9",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/youtube/posts/{id}youtube.postYouTube 게시물 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | YouTube 동영상 id. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/youtube/posts/1842951234567890123"응답 예제
{
"data": {
"id": "wSimVideo0001",
"platform": "youtube",
"type": "post",
"author": {
"id": "UCsim0000000000000000777",
"username": "creatordev",
"display_name": "Creator Dev",
"verified": true
},
"title": "One API for every platform.",
"text": "One API for every platform.",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"views": 154203,
"likes": 864,
"comments": 42
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/thumb.jpg",
"duration_ms": 212000
}
],
"fetched_at": "2026-09-18T07:30:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 3600,
"source_layer": "cache",
"stale": false
},
"billing": {
"amount_credits": 0,
"cache_hit": true
}
}
}/v1/youtube/posts/{id}/commentsyoutube.commentsYouTube 동영상 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | YouTube 동영상 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/youtube/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "UgxSim000000000001",
"platform": "youtube",
"type": "comment",
"post_id": "wSimVideo0001",
"author": {
"id": "UCsimfan000000000001",
"username": "curiousfan",
"display_name": "Curious Fan",
"verified": false
},
"text": "This is the future of data APIs.",
"created_at": "2026-09-17T13:00:00Z",
"metrics": {
"likes": 12,
"replies": 2
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 600,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/youtube/search/postsyoutube.search_postsYouTube 동영상 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/youtube/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "sSimVideo001",
"platform": "youtube",
"type": "post",
"author": {
"id": "UCsimsearch00000000001",
"username": "datafan",
"display_name": "Data Fan",
"verified": false
},
"title": "normalized entities for every feed!",
"text": null,
"created_at": null,
"metrics": {
"views": 0,
"likes": 0,
"comments": 0
},
"attachments": [],
"fetched_at": "2026-09-18T09:05:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "live",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/youtube/search/usersyoutube.search_users채널 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/youtube/search/users?q=fetchpi"응답 예제
{
"query": "data api",
"data": [
{
"id": "UCsim0000000000000000777",
"platform": "youtube",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Videos about data APIs.",
"url": "https://www.youtube.com/@creatordev",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
"verified": true,
"created_at": "2019-04-01T10:15:00Z",
"metrics": {
"subscribers": 51230,
"views": 19824567,
"posts": 862
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/reddit/users/{username}reddit.profileReddit 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Reddit 사용자 이름(앞의 u/ 제외). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/users/newdev"응답 예제
{
"data": {
"id": "1a2b3c",
"platform": "reddit",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Posts about data APIs.",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.png",
"verified": true,
"created_at": "2019-04-01T08:15:00Z",
"metrics": {
"karma_posts": 8620,
"karma_comments": 15300,
"total_karma": 24100,
"followers": 4811
},
"fetched_at": "2026-09-18T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 120,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/reddit/users/{username}/postsreddit.user_postsReddit 사용자 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Reddit 사용자 이름(앞의 u/ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/users/newdev/posts"응답 예제
{
"data": [
{
"id": "1simpost01",
"platform": "reddit",
"type": "post",
"author": {
"id": "7004994945",
"username": "creatordev",
"display_name": null,
"verified": false
},
"title": "First post on the platform.",
"text": "One API for every platform.",
"url": "https://www.reddit.com/r/dataapi/comments/1simpost01/",
"created_at": "2026-09-16T19:23:20Z",
"metrics": {
"upvotes": 864,
"downvotes": 12,
"comments": 42
},
"attachments": [],
"fetched_at": "2026-09-18T09:00:00Z"
},
{
"id": "1simpost02",
"platform": "reddit",
"type": "post",
"author": {
"id": "7004994945",
"username": "creatordev",
"display_name": null,
"verified": false
},
"title": "Freshness modes, explained.",
"text": "One API for every platform.",
"url": "https://www.reddit.com/r/dataapi/comments/1simpost02/",
"created_at": "2026-09-16T08:00:00Z",
"metrics": {
"upvotes": 412,
"downvotes": 9,
"comments": 18
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/p1-full.jpg",
"preview_image_url": "https://cdn.example.com/p1.jpg"
},
{
"type": "video",
"url": "https://cdn.example.com/p2.mp4",
"preview_image_url": "https://cdn.example.com/p2.jpg"
}
],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiJ0M19zaW0ifQ",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/reddit/posts/{id}reddit.postReddit 게시물 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Reddit 게시물 id(t3 base36, 접두사 없음). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/posts/1842951234567890123"응답 예제
{
"data": {
"id": "1simpost01",
"platform": "reddit",
"type": "post",
"author": {
"id": "7004994945",
"username": "creatordev",
"display_name": null,
"verified": false
},
"title": "One API for every platform.",
"text": "One API for every platform.",
"url": "https://www.reddit.com/r/dataapi/comments/1simpost01/",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"upvotes": 864,
"downvotes": 12,
"comments": 42
},
"attachments": [],
"fetched_at": "2026-09-18T07:30:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 3600,
"source_layer": "cache",
"stale": false
},
"billing": {
"amount_credits": 0,
"cache_hit": true
}
}
}/v1/reddit/posts/{id}/commentsreddit.commentsReddit 게시물 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Reddit 게시물 id(t3 base36, 접두사 없음). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 게시물을 찾을 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "simcomment1",
"platform": "reddit",
"type": "comment",
"post_id": "1simpost01",
"author": {
"id": "fan0000001",
"username": "curiousfan",
"display_name": null,
"verified": false
},
"text": "This is the future of data APIs.",
"created_at": "2026-09-17T13:06:40Z",
"metrics": {
"upvotes": 12,
"downvotes": 1
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 600,
"source_layer": "db",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/reddit/search/postsreddit.search_postsReddit 게시물 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "1simsear01",
"platform": "reddit",
"type": "post",
"author": {
"id": "5566778899",
"username": "datafan",
"display_name": null,
"verified": false
},
"title": "normalized entities for every feed!",
"text": "One API for every platform.",
"url": "https://www.reddit.com/r/dataapi/comments/1simsear01/",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"upvotes": 91,
"downvotes": 2,
"comments": 3
},
"attachments": [],
"fetched_at": "2026-09-18T09:05:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "live",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/reddit/search/usersreddit.search_users사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/search/users?q=fetchpi"응답 예제
{
"query": "data api",
"data": [
{
"id": "1a2b3c",
"platform": "reddit",
"type": "profile",
"username": "creatordev",
"display_name": "Creator Dev",
"description": "Posts about data APIs.",
"profile_image_url": "https://cdn.example.com/avatar/creatordev.png",
"verified": true,
"created_at": "2019-04-01T08:15:00Z",
"metrics": {
"karma_posts": 8620,
"karma_comments": 15300,
"total_karma": 24100,
"followers": 4811
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/reddit/subreddits/{name}/postsreddit.subreddit_posts서브레딧 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| name | path | 필수 | string | 서브레딧 이름(앞의 r/ 제외). |
| sort | query | 선택 | hot | new | top = hot | 서브레딧 게시물 목록의 upstream 피드 정렬. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/subreddits/technology/posts"응답 예제
{
"data": [
{
"id": "1simpost01",
"platform": "reddit",
"type": "post",
"author": {
"id": "7004994945",
"username": "creatordev",
"display_name": null,
"verified": false
},
"title": "One API for every platform.",
"text": "One API for every platform.",
"url": "https://www.reddit.com/r/dataapi/comments/1simpost01/",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"upvotes": 864,
"downvotes": 12,
"comments": 42
},
"attachments": [],
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/reddit/users/{username}/commentsreddit.user_comments사용자 댓글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Reddit 사용자 이름(앞의 u/ 제외). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 알 수 없는 사용자 이름입니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/reddit/users/newdev/comments"응답 예제
{
"data": [
{
"id": "simcomment1",
"platform": "reddit",
"type": "comment",
"post_id": "1simpost01",
"author": {
"id": "fan0000001",
"username": "curiousfan",
"display_name": null,
"verified": false
},
"text": "This is the future of data APIs.",
"created_at": "2026-09-17T13:06:40Z",
"metrics": {
"upvotes": 12,
"downvotes": 1
},
"fetched_at": "2026-09-18T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/users/{username}douyin.profileDouyin 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/users/newdev"응답 예제
{
"data": {
"id": "7004994945113",
"platform": "douyin",
"type": "profile",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"description": "短视频形式的数据 API 教程。",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/douyin-fetchpi.jpg",
"verified": true,
"created_at": "2019-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 88,
"posts": 412,
"likes": 18600000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/douyin/posts/{id}douyin.postDouyin 동영상 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/posts/1842951234567890123"응답 예제
{
"data": {
"id": "7412050000000001001",
"platform": "douyin",
"type": "post",
"author": {
"id": "7004994945113",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"verified": true
},
"text": "一条关于数据 API 的短视频。",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 32810,
"comments": 1204,
"shares": 988,
"collects": 5600,
"views": 2140000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
"duration_ms": 45678
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/douyin/users/{username}/postsdouyin.user_postsDouyin 사용자 동영상
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/users/newdev/posts"응답 예제
{
"data": [
{
"id": "7412050000000001001",
"platform": "douyin",
"type": "post",
"author": {
"id": "7004994945113",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"verified": true
},
"text": "一条关于数据 API 的短视频。",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 32810,
"comments": 1204,
"shares": 988,
"collects": 5600,
"views": 2140000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
"duration_ms": 45678
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/posts/{id}/commentsdouyin.commentsDouyin 동영상 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "7411222200000001001",
"platform": "douyin",
"type": "comment",
"post_id": "7412050000000001001",
"author": {
"id": "7004994945114",
"username": "commentfan",
"display_name": "评论粉丝",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-17T13:01:22Z",
"metrics": {
"likes": 823,
"replies": 12
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/posts/{id}/comments/{comment_id}/repliesdouyin.comment_repliesDouyin 댓글 답글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함). |
| comment_id | path | 필수 | string | 답글을 나열할 부모 댓글 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/posts/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "7411222200000001001",
"platform": "douyin",
"type": "comment",
"post_id": "7412050000000001001",
"author": {
"id": "7004994945114",
"username": "commentfan",
"display_name": "评论粉丝",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-17T13:01:22Z",
"metrics": {
"likes": 823,
"replies": 12
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/users/{username}/followersdouyin.user_followersDouyin 팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/users/newdev/followers"응답 예제
{
"data": [
{
"id": "7004994945113",
"platform": "douyin",
"type": "profile",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"description": "短视频形式的数据 API 教程。",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/douyin-fetchpi.jpg",
"verified": true,
"created_at": "2019-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 88,
"posts": 412,
"likes": 18600000
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/users/{username}/followingdouyin.user_followingDouyin 팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/users/newdev/following"응답 예제
{
"data": [
{
"id": "7004994945113",
"platform": "douyin",
"type": "profile",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"description": "短视频形式的数据 API 教程。",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/douyin-fetchpi.jpg",
"verified": true,
"created_at": "2019-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 88,
"posts": 412,
"likes": 18600000
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/hashtags/{tag}douyin.hashtagDouyin 해시태그 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| tag | path | 필수 | string | 더우인 해시태그 어드레싱 키: upstream 챌린지 id ch_id를 그대로 전달합니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/hashtags/trending"응답 예제
{
"data": {
"id": "1655000000000001001",
"platform": "douyin",
"type": "hashtag",
"name": "数据API",
"description": "话题详情(按上游 ch_id 寻址)。",
"cover_image_url": "https://cdn.example.com/cover/douyin-hashtag.jpeg",
"metrics": {
"views": 960000000,
"posts": 128000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/douyin/hashtags/{tag}/postsdouyin.hashtag_postsDouyin 해시태그 동영상
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| tag | path | 필수 | string | 더우인 해시태그 어드레싱 키: upstream 챌린지 id ch_id를 그대로 전달합니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/hashtags/trending/posts"응답 예제
{
"data": [
{
"id": "7412050000000001001",
"platform": "douyin",
"type": "post",
"author": {
"id": "7004994945113",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"verified": true
},
"text": "一条关于数据 API 的短视频。",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 32810,
"comments": 1204,
"shares": 988,
"collects": 5600,
"views": 2140000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
"duration_ms": 45678
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/musics/{id}douyin.musicDouyin 음악 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 더우인 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/musics/1842951234567890123"응답 예제
{
"data": {
"id": "7416880000000001001",
"platform": "douyin",
"type": "music",
"title": "原创音源(数据 API 主题曲)",
"author_name": "数据工场",
"duration_ms": 45678,
"cover_image_url": "https://cdn.example.com/cover/douyin-music.jpeg",
"metrics": {
"videos": 128000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/douyin/musics/{id}/postsdouyin.music_postsDouyin 음악 동영상
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 더우인 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/musics/1842951234567890123/posts"응답 예제
{
"data": [
{
"id": "7412050000000001001",
"platform": "douyin",
"type": "post",
"author": {
"id": "7004994945113",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"verified": true
},
"text": "一条关于数据 API 的短视频。",
"created_at": "2026-09-17T12:34:56Z",
"metrics": {
"likes": 32810,
"comments": 1204,
"shares": 988,
"collects": 5600,
"views": 2140000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
"duration_ms": 45678
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/douyin/live/{id}douyin.live_roomDouyin 라이브 룸 정보
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 더우인 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/live/1842951234567890123"응답 예제
{
"data": {
"id": "8800000000000001001",
"platform": "douyin",
"type": "live_room",
"title": "直播:数据 API 问答",
"username": "fetchpi_dev",
"display_name": "FetchPI 抖音站",
"status": "LIVE",
"viewer_count": 3456,
"started_at": "2026-09-21T08:00:00Z",
"cover_image_url": "https://cdn.example.com/cover/douyin-live.jpeg",
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/douyin/hot-searchdouyin.hot_searchDouyin 핫서치 차트
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/hot-search"응답 예제
{
"data": {
"platform": "douyin",
"type": "hot_search",
"words": [
{
"word": "数据开放",
"hot_value": 4821000
},
{
"word": "实体层",
"hot_value": 3120004
}
],
"updated_at": "2026-09-21T08:00:00Z",
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/douyin/download/{id}douyin.downloadDouyin 다운로드 URL 해석
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/douyin/download/1842951234567890123"응답 예제
{
"data": {
"id": "7412050000000001001",
"platform": "douyin",
"type": "download",
"play_url": "https://v.douyincdn.com/aweme/7412050000000001001/play.mp4?no-watermark=1",
"preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
"duration_ms": 45678,
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/kuaishou/users/{username}kuaishou.profile콰이쇼우 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 콰이쇼우(Kuaishou) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/users/newdev"응답 예제
{
"data": {
"id": "3185500122",
"platform": "kuaishou",
"type": "profile",
"username": "fetchpi_ks",
"display_name": "FetchPI 快手号",
"description": "快手短视频与数据开放。",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/kuaishou-fetchpi.jpg",
"verified": false,
"created_at": "2018-03-15T00:00:00Z",
"metrics": {
"followers": 156000,
"following": 210,
"posts": 389,
"likes": 2100000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/kuaishou/posts/{id}kuaishou.post콰이쇼우 게시물 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 콰이쇼우 사진 id(플랫폼 네이티브 photo_id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/posts/1842951234567890123"응답 예제
{
"data": {
"id": "5566778899001",
"platform": "kuaishou",
"type": "post",
"author": {
"id": "3185500122",
"username": "fetchpi_ks",
"display_name": "FetchPI 快手号",
"verified": false
},
"text": "快手短视频数据示例。",
"created_at": "2026-09-16T10:00:00Z",
"metrics": {
"likes": 8642,
"comments": 512,
"shares": 87,
"views": 154000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
"duration_ms": 38400
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/kuaishou/users/{username}/postskuaishou.user_posts콰이쇼우 사용자 게시물
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 콰이쇼우(Kuaishou) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/users/newdev/posts"응답 예제
{
"data": [
{
"id": "5566778899001",
"platform": "kuaishou",
"type": "post",
"author": {
"id": "3185500122",
"username": "fetchpi_ks",
"display_name": "FetchPI 快手号",
"verified": false
},
"text": "快手短视频数据示例。",
"created_at": "2026-09-16T10:00:00Z",
"metrics": {
"likes": 8642,
"comments": 512,
"shares": 87,
"views": 154000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
"duration_ms": 38400
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/kuaishou/posts/{id}/commentskuaishou.comments콰이쇼우 게시물 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 콰이쇼우 사진 id(플랫폼 네이티브 photo_id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "7700112233445",
"platform": "kuaishou",
"type": "comment",
"post_id": "5566778899001",
"author": {
"id": "4400112233445",
"username": "ksfan001",
"display_name": "快手网友",
"verified": false
},
"text": "这个讲解很实用。",
"created_at": "2026-09-16T10:20:00Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/kuaishou/search/postskuaishou.search_posts콰이쇼우 게시물 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "5566778899001",
"platform": "kuaishou",
"type": "post",
"author": {
"id": "3185500122",
"username": "fetchpi_ks",
"display_name": "FetchPI 快手号",
"verified": false
},
"text": "快手短视频数据示例。",
"created_at": "2026-09-16T10:00:00Z",
"metrics": {
"likes": 8642,
"comments": 512,
"shares": 87,
"views": 154000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
"duration_ms": 38400
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/kuaishou/posts/{id}/comments/{comment_id}/replieskuaishou.comment_replies콰이쇼우 댓글 답글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 콰이쇼우 사진 id(플랫폼 네이티브 photo_id). |
| comment_id | path | 필수 | string | 대댓글을 나열할 루트 댓글 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/posts/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "7700112233445",
"platform": "kuaishou",
"type": "comment",
"post_id": "5566778899001",
"author": {
"id": "4400112233445",
"username": "ksfan001",
"display_name": "快手网友",
"verified": false
},
"text": "这个讲解很实用。",
"created_at": "2026-09-16T10:20:00Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/kuaishou/search/userskuaishou.search_users콰이쇼우 사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/search/users?q=fetchpi"응답 예제
{
"data": [
{
"id": "3185500122",
"platform": "kuaishou",
"type": "profile",
"username": "fetchpi_ks",
"display_name": "FetchPI 快手号",
"description": "快手短视频与数据开放。",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/kuaishou-fetchpi.jpg",
"verified": false,
"created_at": "2018-03-15T00:00:00Z",
"metrics": {
"followers": 156000,
"following": 210,
"posts": 389,
"likes": 2100000
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/kuaishou/hashtags/{tag}/postskuaishou.hashtag_posts콰이쇼우 태그 게시물
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| tag | path | 필수 | string | 콰이쇼우 태그 어드레싱 키: upstream general_tag_id를 그대로 전달합니다(이 풀에는 태그 상세 라우트가 없음). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/hashtags/trending/posts"응답 예제
{
"data": [
{
"id": "5566778899001",
"platform": "kuaishou",
"type": "post",
"author": {
"id": "3185500122",
"username": "fetchpi_ks",
"display_name": "FetchPI 快手号",
"verified": false
},
"text": "快手短视频数据示例。",
"created_at": "2026-09-16T10:00:00Z",
"metrics": {
"likes": 8642,
"comments": 512,
"shares": 87,
"views": 154000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
"duration_ms": 38400
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/kuaishou/users/{username}/livekuaishou.live_room콰이쇼우 라이브 룸 정보
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 콰이쇼우(Kuaishou) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/kuaishou/users/newdev/live"응답 예제
{
"data": {
"id": "8810000000000001001",
"platform": "kuaishou",
"type": "live_room",
"title": "快手直播:数据开放夜",
"username": "fetchpi_ks",
"display_name": "FetchPI 快手号",
"status": "LIVE",
"viewer_count": 1234,
"started_at": "2026-09-21T07:30:00Z",
"cover_image_url": "https://cdn.example.com/cover/kuaishou-live.jpeg",
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/xigua/users/{username}xigua.profile시과 비디오 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 시과(Xigua) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xigua/users/newdev"응답 예제
{
"data": {
"id": "7004994945115",
"platform": "xigua",
"type": "profile",
"username": "fetchpi_xigua",
"display_name": "FetchPI 西瓜号",
"description": "中视频数据 API 演示。",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/xigua-fetchpi.jpg",
"verified": false,
"created_at": "2020-01-10T00:00:00Z",
"metrics": {
"followers": 86500,
"following": 35,
"posts": 128,
"likes": 940000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/xigua/posts/{id}xigua.post시과 비디오 동영상 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 시과 동영상 id(플랫폼 네이티브 item id, /download의 어드레싱 키이기도 함). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xigua/posts/1842951234567890123"응답 예제
{
"data": {
"id": "7413050000000001001",
"platform": "xigua",
"type": "post",
"author": {
"id": "7004994945115",
"username": "fetchpi_xigua",
"display_name": "FetchPI 西瓜号",
"verified": false
},
"title": "西瓜视频:一条中视频",
"text": "中视频格式的数据 API 演示。",
"created_at": "2026-09-15T08:30:00Z",
"metrics": {
"likes": 5120,
"comments": 320,
"shares": 140,
"views": 880000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
"duration_ms": 732000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/xigua/users/{username}/postsxigua.user_posts시과 비디오 사용자 동영상
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 시과(Xigua) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xigua/users/newdev/posts"응답 예제
{
"data": [
{
"id": "7413050000000001001",
"platform": "xigua",
"type": "post",
"author": {
"id": "7004994945115",
"username": "fetchpi_xigua",
"display_name": "FetchPI 西瓜号",
"verified": false
},
"title": "西瓜视频:一条中视频",
"text": "中视频格式的数据 API 演示。",
"created_at": "2026-09-15T08:30:00Z",
"metrics": {
"likes": 5120,
"comments": 320,
"shares": 140,
"views": 880000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
"duration_ms": 732000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/xigua/posts/{id}/commentsxigua.comments시과 비디오 동영상 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 시과 동영상 id(플랫폼 네이티브 item id, /download의 어드레싱 키이기도 함). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xigua/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "7413222200000001001",
"platform": "xigua",
"type": "comment",
"post_id": "7413050000000001001",
"author": {
"id": "7004994945116",
"username": "xiguafan",
"display_name": "西瓜观众",
"verified": false
},
"text": "中视频也可以结构化。",
"created_at": "2026-09-15T09:12:00Z",
"metrics": {
"likes": 41,
"replies": 2
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/xigua/search/postsxigua.search_posts시과 비디오 동영상 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xigua/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "7413050000000001001",
"platform": "xigua",
"type": "post",
"author": {
"id": "7004994945115",
"username": "fetchpi_xigua",
"display_name": "FetchPI 西瓜号",
"verified": false
},
"title": "西瓜视频:一条中视频",
"text": "中视频格式的数据 API 演示。",
"created_at": "2026-09-15T08:30:00Z",
"metrics": {
"likes": 5120,
"comments": 320,
"shares": 140,
"views": 880000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
"duration_ms": 732000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/xigua/download/{id}xigua.download시과 비디오 재생 URL 해석
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 시과 동영상 id(플랫폼 네이티브 item id, /download의 어드레싱 키이기도 함). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/xigua/download/1842951234567890123"응답 예제
{
"data": {
"id": "7413050000000001001",
"platform": "xigua",
"type": "download",
"play_url": "https://v.xiguacdn.com/item/7413050000000001001/play.mp4",
"preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
"duration_ms": 732000,
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/toutiao/users/{username}toutiao.profile투우차오 작가 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 투터아오(Toutiao) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/toutiao/users/newdev"응답 예제
{
"data": {
"id": "1567049494",
"platform": "toutiao",
"type": "profile",
"username": "toutiao_datastudio",
"display_name": "数据工场头条号",
"description": "今日头条创作与数据开放。",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/toutiao-fetchpi.jpg",
"verified": true,
"created_at": "2016-08-01T00:00:00Z",
"metrics": {
"followers": 235000,
"following": 12,
"posts": 890,
"likes": 620000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/toutiao/posts/{id}toutiao.post투우차오 기사 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 투터아오 콘텐츠 id(기사의 플랫폼 네이티브 group_id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/toutiao/posts/1842951234567890123"응답 예제
{
"data": {
"id": "1820000000001001",
"platform": "toutiao",
"type": "post",
"author": {
"id": "1567049494",
"username": "toutiao_datastudio",
"display_name": "数据工场头条号",
"verified": true
},
"title": "头条文章:实体层与数据集市",
"text": "结构化访问文章内容与互动指标。",
"url": "https://www.toutiao.com/article/1820000000001001",
"created_at": "2026-09-14T07:00:00Z",
"metrics": {
"likes": 610,
"comments": 88,
"views": 45200
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/toutiao/posts/{id}/commentstoutiao.comments투우차오 기사 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 투터아오 콘텐츠 id(기사의 플랫폼 네이티브 group_id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/toutiao/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "1821000000001001",
"platform": "toutiao",
"type": "comment",
"post_id": "1820000000001001",
"author": {
"id": "1567049500",
"username": "toutiaoreader",
"display_name": "头条读者",
"verified": false
},
"text": "文章数据口径讲得明白。",
"created_at": "2026-09-14T08:05:00Z",
"metrics": {
"likes": 18,
"replies": 1
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/lemon8/users/{username}lemon8.profileLemon8 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Lemon8 사용자 id——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/lemon8/users/newdev"응답 예제
{
"data": {
"id": "7304994945116",
"platform": "lemon8",
"type": "profile",
"username": "fetchpi_lemon",
"display_name": "FetchPI on Lemon8",
"description": "Lifestyle data notes.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/lemon8-fetchpi.jpg",
"verified": false,
"created_at": "2023-04-01T00:00:00Z",
"metrics": {
"followers": 24800,
"following": 150,
"posts": 96,
"likes": 158000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/lemon8/posts/{id}lemon8.postLemon8 노트 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Lemon8 노트 id(플랫폼 네이티브 item id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/lemon8/posts/1842951234567890123"응답 예제
{
"data": {
"id": "7423050000000001001",
"platform": "lemon8",
"type": "post",
"author": {
"id": "7304994945116",
"username": "fetchpi_lemon",
"display_name": "FetchPI on Lemon8",
"verified": false
},
"title": "Lemon8 note: data APIs",
"text": "A lifestyle note with structured metrics.",
"created_at": "2026-09-13T11:00:00Z",
"metrics": {
"likes": 1320,
"comments": 64,
"collects": 210
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/lemon8-7423050000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/lemon8-7423050000000001001-2.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/lemon8/search/postslemon8.search_postsLemon8 노트 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/lemon8/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "7423050000000001001",
"platform": "lemon8",
"type": "post",
"author": {
"id": "7304994945116",
"username": "fetchpi_lemon",
"display_name": "FetchPI on Lemon8",
"verified": false
},
"title": "Lemon8 note: data APIs",
"text": "A lifestyle note with structured metrics.",
"created_at": "2026-09-13T11:00:00Z",
"metrics": {
"likes": 1320,
"comments": 64,
"collects": 210
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/lemon8-7423050000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/lemon8-7423050000000001001-2.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/lemon8/users/{username}/followerslemon8.user_followersLemon8 팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Lemon8 사용자 id——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/lemon8/users/newdev/followers"응답 예제
{
"data": [
{
"id": "7304994945116",
"platform": "lemon8",
"type": "profile",
"username": "fetchpi_lemon",
"display_name": "FetchPI on Lemon8",
"description": "Lifestyle data notes.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/lemon8-fetchpi.jpg",
"verified": false,
"created_at": "2023-04-01T00:00:00Z",
"metrics": {
"followers": 24800,
"following": 150,
"posts": 96,
"likes": 158000
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/lemon8/users/{username}/followinglemon8.user_followingLemon8 팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Lemon8 사용자 id——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/lemon8/users/newdev/following"응답 예제
{
"data": [
{
"id": "7304994945116",
"platform": "lemon8",
"type": "profile",
"username": "fetchpi_lemon",
"display_name": "FetchPI on Lemon8",
"description": "Lifestyle data notes.",
"url": "https://fetchpi.com",
"profile_image_url": "https://cdn.example.com/avatar/lemon8-fetchpi.jpg",
"verified": false,
"created_at": "2023-04-01T00:00:00Z",
"metrics": {
"followers": 24800,
"following": 150,
"posts": 96,
"likes": 158000
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/lemon8/topics/{id}lemon8.topicLemon8 토픽 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Lemon8 토픽 id(플랫폼 네이티브 포럼 id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/lemon8/topics/1842951234567890123"응답 예제
{
"data": {
"id": "1666000000000001001",
"platform": "lemon8",
"type": "topic",
"name": "数据开放",
"description": "Lemon8 话题详情(按 forum_id 寻址)。",
"metrics": {
"posts": 8600
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/bilibili/users/{username}bilibili.profileBilibili 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 비리빌리(bilibili) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/users/newdev"응답 예제
{
"data": {
"id": "3255000122",
"platform": "bilibili",
"type": "profile",
"username": "FetchPI 哔哩站",
"display_name": "FetchPI 哔哩站",
"description": "哔哩哔哩数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/bilibili-fetchpi.jpg",
"verified": true,
"metrics": {
"followers": 328000,
"following": 45,
"posts": 388
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/bilibili/posts/{id}bilibili.postBilibili 동영상 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 비리빌리 동영상 id(플랫폼 네이티브 BV id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/posts/1842951234567890123"응답 예제
{
"data": {
"id": "BV1ma101c0001",
"platform": "bilibili",
"type": "post",
"author": {
"id": "3255000122",
"username": "FetchPI 哔哩站",
"display_name": "FetchPI 哔哩站",
"verified": true
},
"title": "哔哩哔哩:数据 API 实战",
"text": "一条关于数据 API 的视频。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 18220,
"comments": 940,
"collects": 2100,
"views": 480000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/bilibili/users/{username}/postsbilibili.user_postsBilibili 사용자 동영상
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 비리빌리(bilibili) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/users/newdev/posts"응답 예제
{
"data": [
{
"id": "BV1ma101c0001",
"platform": "bilibili",
"type": "post",
"author": {
"id": "3255000122",
"username": "FetchPI 哔哩站",
"display_name": "FetchPI 哔哩站",
"verified": true
},
"title": "哔哩哔哩:数据 API 实战",
"text": "一条关于数据 API 的视频。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 18220,
"comments": 940,
"collects": 2100,
"views": 480000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/bilibili/posts/{id}/commentsbilibili.commentsBilibili 동영상 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 비리빌리 동영상 id(플랫폼 네이티브 BV id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "887711220001",
"platform": "bilibili",
"type": "comment",
"post_id": "BV1ma101c0001",
"author": {
"id": "3255000200",
"username": "哔哩网友",
"display_name": "哔哩网友",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/bilibili/posts/{id}/comments/{comment_id}/repliesbilibili.comment_repliesBilibili 댓글 답글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 비리빌리 동영상 id(플랫폼 네이티브 BV id). |
| comment_id | path | 필수 | string | 답글을 나열할 부모 댓글 id(rpid). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/posts/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "887711220001",
"platform": "bilibili",
"type": "comment",
"post_id": "BV1ma101c0001",
"author": {
"id": "3255000200",
"username": "哔哩网友",
"display_name": "哔哩网友",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/bilibili/search/postsbilibili.search_postsBilibili 동영상 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "BV1ma101c0001",
"platform": "bilibili",
"type": "post",
"author": {
"id": "3255000122",
"username": "FetchPI 哔哩站",
"display_name": "FetchPI 哔哩站",
"verified": true
},
"title": "哔哩哔哩:数据 API 实战",
"text": "一条关于数据 API 的视频。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 18220,
"comments": 940,
"collects": 2100,
"views": 480000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/bilibili/popularbilibili.popularBilibili 인기 동영상
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/popular"응답 예제
{
"data": [
{
"id": "BV1ma101c0001",
"platform": "bilibili",
"type": "post",
"author": {
"id": "3255000122",
"username": "FetchPI 哔哩站",
"display_name": "FetchPI 哔哩站",
"verified": true
},
"title": "哔哩哔哩:数据 API 实战",
"text": "一条关于数据 API 的视频。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 18220,
"comments": 940,
"collects": 2100,
"views": 480000
},
"attachments": [
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/bilibili/hot-searchbilibili.hot_searchBilibili 핫서치 보드
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/hot-search"응답 예제
{
"data": {
"platform": "bilibili",
"type": "hot_search",
"words": [
{
"word": "数据开放",
"hot_value": 4821000
},
{
"word": "实体层",
"hot_value": 3120004
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/bilibili/live/{id}bilibili.live_roomBilibili 라이브 룸 정보
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 비리빌리 라이브 방 id(플랫폼 네이티브 room_id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/bilibili/live/1842951234567890123"응답 예제
{
"data": {
"id": "8900000000001001",
"platform": "bilibili",
"type": "live_room",
"title": "直播:数据 API 问答",
"username": "FetchPI 哔哩站",
"display_name": "FetchPI 哔哩站",
"status": "LIVE",
"viewer_count": 3456,
"cover_image_url": "https://cdn.example.com/cover/bilibili-live.jpeg",
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/weibo/users/{username}weibo.profile웨이보 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/users/newdev"응답 예제
{
"data": {
"id": "6605000122",
"platform": "weibo",
"type": "profile",
"username": "微博数据站",
"display_name": "微博数据站",
"description": "微博数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
"verified": true,
"created_at": "2018-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 210,
"posts": 19800
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/weibo/posts/{id}weibo.post웨이보 게시물 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 웨이보 게시물 id(플랫폼 네이티브 status id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/posts/1842951234567890123"응답 예제
{
"data": {
"id": "5551000000001001",
"platform": "weibo",
"type": "post",
"author": {
"id": "6605000122",
"username": "微博数据站",
"display_name": "微博数据站",
"verified": true
},
"text": "一条关于数据 API 的微博。",
"created_at": "2026-09-17T04:34:56Z",
"metrics": {
"likes": 8230,
"comments": 1204,
"shares": 988
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/weibo/users/{username}/postsweibo.user_posts웨이보 사용자 게시물
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/users/newdev/posts"응답 예제
{
"data": [
{
"id": "5551000000001001",
"platform": "weibo",
"type": "post",
"author": {
"id": "6605000122",
"username": "微博数据站",
"display_name": "微博数据站",
"verified": true
},
"text": "一条关于数据 API 的微博。",
"created_at": "2026-09-17T04:34:56Z",
"metrics": {
"likes": 8230,
"comments": 1204,
"shares": 988
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/weibo/posts/{id}/commentsweibo.comments웨이보 게시물 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 웨이보 게시물 id(플랫폼 네이티브 status id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "5551222200001001",
"platform": "weibo",
"type": "comment",
"post_id": "5551000000001001",
"author": {
"id": "6605000200",
"username": "微博网友",
"display_name": "微博网友",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-17T05:01:22Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/weibo/posts/{id}/comments/{comment_id}/repliesweibo.comment_replies웨이보 댓글 답글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 웨이보 게시물 id(플랫폼 네이티브 status id). |
| comment_id | path | 필수 | string | 대댓글을 나열할 부모 댓글 id(주평론 id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/posts/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "5551222200001001",
"platform": "weibo",
"type": "comment",
"post_id": "5551000000001001",
"author": {
"id": "6605000200",
"username": "微博网友",
"display_name": "微博网友",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-17T05:01:22Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/weibo/posts/{id}/repostsweibo.post_reposts웨이보 리포스트 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 웨이보 게시물 id(플랫폼 네이티브 status id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/posts/1842951234567890123/reposts"응답 예제
{
"data": [
{
"id": "5551000000001001",
"platform": "weibo",
"type": "post",
"author": {
"id": "6605000122",
"username": "微博数据站",
"display_name": "微博数据站",
"verified": true
},
"text": "一条关于数据 API 的微博。",
"created_at": "2026-09-17T04:34:56Z",
"metrics": {
"likes": 8230,
"comments": 1204,
"shares": 988
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/weibo/posts/{id}/likersweibo.post_likers웨이보 좋아요 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 웨이보 게시물 id(플랫폼 네이티브 status id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/posts/1842951234567890123/likers"응답 예제
{
"data": [
{
"id": "6605000122",
"platform": "weibo",
"type": "profile",
"username": "微博数据站",
"display_name": "微博数据站",
"description": "微博数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
"verified": true,
"created_at": "2018-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 210,
"posts": 19800
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/weibo/users/{username}/followersweibo.user_followers웨이보 팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/users/newdev/followers"응답 예제
{
"data": [
{
"id": "6605000122",
"platform": "weibo",
"type": "profile",
"username": "微博数据站",
"display_name": "微博数据站",
"description": "微博数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
"verified": true,
"created_at": "2018-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 210,
"posts": 19800
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/weibo/users/{username}/followingweibo.user_following웨이보 팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/users/newdev/following"응답 예제
{
"data": [
{
"id": "6605000122",
"platform": "weibo",
"type": "profile",
"username": "微博数据站",
"display_name": "微博数据站",
"description": "微博数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
"verified": true,
"created_at": "2018-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 210,
"posts": 19800
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/weibo/search/postsweibo.search_posts웨이보 게시물 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "5551000000001001",
"platform": "weibo",
"type": "post",
"author": {
"id": "6605000122",
"username": "微博数据站",
"display_name": "微博数据站",
"verified": true
},
"text": "一条关于数据 API 的微博。",
"created_at": "2026-09-17T04:34:56Z",
"metrics": {
"likes": 8230,
"comments": 1204,
"shares": 988
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/weibo/search/usersweibo.search_users웨이보 사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/search/users?q=fetchpi"응답 예제
{
"data": [
{
"id": "6605000122",
"platform": "weibo",
"type": "profile",
"username": "微博数据站",
"display_name": "微博数据站",
"description": "微博数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
"verified": true,
"created_at": "2018-06-01T00:00:00Z",
"metrics": {
"followers": 1288000,
"following": 210,
"posts": 19800
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/weibo/hot-searchweibo.hot_search웨이보 핫서치 보드
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/weibo/hot-search"응답 예제
{
"data": {
"platform": "weibo",
"type": "hot_search",
"words": [
{
"word": "数据开放",
"hot_value": 4821000
},
{
"word": "实体层",
"hot_value": 3120004
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/zhihu/users/{username}zhihu.profile쯔후 프로필
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/users/newdev"응답 예제
{
"data": {
"id": "9905000122",
"platform": "zhihu",
"type": "profile",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"description": "知乎数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
"verified": false,
"metrics": {
"followers": 86500,
"following": 35,
"posts": 128
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/zhihu/answers/{id}zhihu.post쯔후 답변 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 즈후 답변 id(즈후 게시물 면의 표준 형태). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/answers/1842951234567890123"응답 예제
{
"data": {
"id": "8801000000001001",
"platform": "zhihu",
"type": "post",
"author": {
"id": "9905000122",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"verified": false
},
"title": "实体层是如何炼成的?",
"text": "回答:结构化访问知乎内容。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 5120,
"comments": 320
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/zhihu/articles/{id}zhihu.article쯔후 아티클 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 즈후 칼럼 기사 id. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/articles/1842951234567890123"응답 예제
{
"data": {
"id": "8801000000001001",
"platform": "zhihu",
"type": "post",
"author": {
"id": "9905000122",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"verified": false
},
"title": "实体层是如何炼成的?",
"text": "回答:结构化访问知乎内容。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 5120,
"comments": 320
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/zhihu/questions/{id}zhihu.question쯔후 질문 상세
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 즈후 질문 id. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/questions/1842951234567890123"응답 예제
{
"data": {
"id": "7701000000001001",
"platform": "zhihu",
"type": "question",
"title": "实体层是如何炼成的?",
"detail": "问题详情:数据 API 的实体层设计。",
"metrics": {
"answers": 1280,
"followers": 8600
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/zhihu/questions/{id}/answerszhihu.question_answers쯔후 질문 답변 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 즈후 질문 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/questions/1842951234567890123/answers"응답 예제
{
"data": [
{
"id": "8801000000001001",
"platform": "zhihu",
"type": "post",
"author": {
"id": "9905000122",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"verified": false
},
"title": "实体层是如何炼成的?",
"text": "回答:结构化访问知乎内容。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 5120,
"comments": 320
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/zhihu/users/{username}/answerszhihu.user_answers쯔후 사용자 답변 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/users/newdev/answers"응답 예제
{
"data": [
{
"id": "8801000000001001",
"platform": "zhihu",
"type": "post",
"author": {
"id": "9905000122",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"verified": false
},
"title": "实体层是如何炼成的?",
"text": "回答:结构化访问知乎内容。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 5120,
"comments": 320
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/zhihu/users/{username}/articleszhihu.user_articles쯔후 사용자 아티클 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/users/newdev/articles"응답 예제
{
"data": [
{
"id": "8801000000001001",
"platform": "zhihu",
"type": "post",
"author": {
"id": "9905000122",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"verified": false
},
"title": "实体层是如何炼成的?",
"text": "回答:结构化访问知乎内容。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 5120,
"comments": 320
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/zhihu/answers/{id}/commentszhihu.comments쯔후 답변 댓글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 즈후 답변 id(즈후 게시물 면의 표준 형태). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/answers/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "9901222200001001",
"platform": "zhihu",
"type": "comment",
"post_id": "8801000000001001",
"author": {
"id": "9905000200",
"username": "zhihu-fan",
"display_name": "知乎网友",
"verified": false
},
"text": "讲得明白。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 41,
"replies": 2
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/zhihu/answers/{id}/comments/{comment_id}/replieszhihu.comment_replies쯔후 댓글 답글
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 즈후 답변 id(즈후 게시물 면의 표준 형태). |
| comment_id | path | 필수 | string | 대댓글을 나열할 부모 댓글 id. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/answers/1842951234567890123/comments/9901222200001001/replies"응답 예제
{
"data": [
{
"id": "9901222200001001",
"platform": "zhihu",
"type": "comment",
"post_id": "8801000000001001",
"author": {
"id": "9905000200",
"username": "zhihu-fan",
"display_name": "知乎网友",
"verified": false
},
"text": "讲得明白。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 41,
"replies": 2
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/zhihu/users/{username}/followerszhihu.user_followers쯔후 팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/users/newdev/followers"응답 예제
{
"data": [
{
"id": "9905000122",
"platform": "zhihu",
"type": "profile",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"description": "知乎数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
"verified": false,
"metrics": {
"followers": 86500,
"following": 35,
"posts": 128
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/zhihu/users/{username}/followingzhihu.user_following쯔후 팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/users/newdev/following"응답 예제
{
"data": [
{
"id": "9905000122",
"platform": "zhihu",
"type": "profile",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"description": "知乎数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
"verified": false,
"metrics": {
"followers": 86500,
"following": 35,
"posts": 128
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/zhihu/search/postszhihu.search_posts쯔후 아티클 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "8801000000001001",
"platform": "zhihu",
"type": "post",
"author": {
"id": "9905000122",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"verified": false
},
"title": "实体层是如何炼成的?",
"text": "回答:结构化访问知乎内容。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 5120,
"comments": 320
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/zhihu/search/userszhihu.search_users쯔후 사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/search/users?q=fetchpi"응답 예제
{
"data": [
{
"id": "9905000122",
"platform": "zhihu",
"type": "profile",
"username": "fetchpi-zhihu",
"display_name": "知乎数据答主",
"description": "知乎数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
"verified": false,
"metrics": {
"followers": 86500,
"following": 35,
"posts": 128
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/zhihu/hot-listzhihu.hot_list쯔후 핫리스트
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/zhihu/hot-list"응답 예제
{
"data": {
"platform": "zhihu",
"type": "hot_list",
"items": [
{
"title": "实体层是如何炼成的?",
"question_id": "7701000000001001",
"heat": 4821000
},
{
"title": "数据开放意味着什么?",
"question_id": "7701000000001002",
"heat": 3120004
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/threads/users/{username}threads.profile프로필 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Threads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/threads/users/newdev"응답 예제
{
"data": {
"id": "7455000122",
"platform": "threads",
"type": "profile",
"username": "fetchpi",
"display_name": "FetchPI Threads",
"description": "Threads 数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/threads-fetchpi.jpg",
"verified": true,
"created_at": "2021-07-06T00:00:00Z",
"metrics": {
"followers": 815000,
"following": 310,
"posts": 4200
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/threads/posts/{id}threads.post게시물 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Threads 게시물 id(플랫폼 네이티브 pk). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/threads/posts/1842951234567890123"응답 예제
{
"data": {
"id": "7459000000001001",
"platform": "threads",
"type": "post",
"author": {
"id": "7455000122",
"username": "fetchpi",
"display_name": "FetchPI Threads",
"verified": true
},
"text": "一条关于数据 API 的 Threads。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 12480,
"comments": 214,
"shares": 66,
"views": 91000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/threads-7459000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/threads-7459000000001001-2.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/media/threads-7459000000001001.mp4"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/threads/users/{username}/poststhreads.user_posts사용자 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Threads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/threads/users/newdev/posts"응답 예제
{
"data": [
{
"id": "7459000000001001",
"platform": "threads",
"type": "post",
"author": {
"id": "7455000122",
"username": "fetchpi",
"display_name": "FetchPI Threads",
"verified": true
},
"text": "一条关于数据 API 的 Threads。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 12480,
"comments": 214,
"shares": 66,
"views": 91000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/threads-7459000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/threads-7459000000001001-2.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/media/threads-7459000000001001.mp4"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/threads/users/{username}/repliesthreads.user_replies사용자 답글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Threads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/threads/users/newdev/replies"응답 예제
{
"data": [
{
"id": "7458000000003001",
"platform": "threads",
"type": "comment",
"post_id": "7459000000001001",
"author": {
"id": "7455000200",
"username": "threads_fan",
"display_name": null,
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/threads/users/{username}/repoststhreads.user_reposts사용자 리포스트 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | Threads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/threads/users/newdev/reposts"응답 예제
{
"data": [
{
"id": "7459000000001001",
"platform": "threads",
"type": "post",
"author": {
"id": "7455000122",
"username": "fetchpi",
"display_name": "FetchPI Threads",
"verified": true
},
"text": "一条关于数据 API 的 Threads。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 12480,
"comments": 214,
"shares": 66,
"views": 91000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/threads-7459000000001001-1.jpeg"
},
{
"type": "photo",
"url": "https://cdn.example.com/images/threads-7459000000001001-2.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/media/threads-7459000000001001.mp4"
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/threads/posts/{id}/commentsthreads.comments게시물 댓글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | Threads 게시물 id(플랫폼 네이티브 pk). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/threads/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "7458000000003001",
"platform": "threads",
"type": "comment",
"post_id": "7459000000001001",
"author": {
"id": "7455000200",
"username": "threads_fan",
"display_name": null,
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 96,
"replies": 3
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/threads/search/usersthreads.search_users사용자 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/threads/search/users?q=fetchpi"응답 예제
{
"data": [
{
"id": "7455000122",
"platform": "threads",
"type": "profile",
"username": "fetchpi",
"display_name": "FetchPI Threads",
"description": "Threads 数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/threads-fetchpi.jpg",
"verified": true,
"created_at": "2021-07-06T00:00:00Z",
"metrics": {
"followers": 815000,
"following": 310,
"posts": 4200
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/linkedin/users/{username}linkedin.profile프로필 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | LinkedIn 멤버 어드레싱 키: 프로필 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/users/newdev"응답 예제
{
"data": {
"id": "6155000122",
"platform": "linkedin",
"type": "profile",
"username": "fetchpi-linkedin",
"display_name": "FetchPI LinkedIn",
"description": "结构化 LinkedIn 数据。",
"url": "https://www.linkedin.com/in/fetchpi-linkedin",
"profile_image_url": "https://cdn.example.com/avatar/linkedin-fetchpi.jpg",
"verified": false,
"metrics": {
"followers": 92000,
"following": 4800,
"posts": 610
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/linkedin/users/{username}/postslinkedin.user_posts사용자 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | LinkedIn 멤버 어드레싱 키: 프로필 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/users/newdev/posts"응답 예제
{
"data": [
{
"id": "7255000000001001",
"platform": "linkedin",
"type": "post",
"author": {
"id": "6155000122",
"username": "fetchpi-linkedin",
"display_name": "FetchPI LinkedIn",
"verified": false
},
"text": "一条关于数据 API 的 LinkedIn 帖子。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 3120,
"comments": 96,
"shares": 18
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/linkedin/companies/{username}linkedin.company_profile회사 프로필 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | LinkedIn 기업 어드레싱 키: 회사 페이지 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/companies/newdev"응답 예제
{
"data": {
"id": "6155000122",
"platform": "linkedin",
"type": "profile",
"username": "fetchpi-linkedin",
"display_name": "FetchPI LinkedIn",
"description": "结构化 LinkedIn 数据。",
"url": "https://www.linkedin.com/in/fetchpi-linkedin",
"profile_image_url": "https://cdn.example.com/avatar/linkedin-fetchpi.jpg",
"verified": false,
"metrics": {
"followers": 92000,
"following": 4800,
"posts": 610
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/linkedin/companies/{username}/postslinkedin.company_posts회사 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | LinkedIn 기업 어드레싱 키: 회사 페이지 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/companies/newdev/posts"응답 예제
{
"data": [
{
"id": "7255000000001001",
"platform": "linkedin",
"type": "post",
"author": {
"id": "6155000122",
"username": "fetchpi-linkedin",
"display_name": "FetchPI LinkedIn",
"verified": false
},
"text": "一条关于数据 API 的 LinkedIn 帖子。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 3120,
"comments": 96,
"shares": 18
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/linkedin/posts/{id}linkedin.post게시물 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | LinkedIn 게시물 어드레싱 키: 게시물 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/posts/1842951234567890123"응답 예제
{
"data": {
"id": "7255000000001001",
"platform": "linkedin",
"type": "post",
"author": {
"id": "6155000122",
"username": "fetchpi-linkedin",
"display_name": "FetchPI LinkedIn",
"verified": false
},
"text": "一条关于数据 API 的 LinkedIn 帖子。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 3120,
"comments": 96,
"shares": 18
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/linkedin/posts/{id}/commentslinkedin.post_comments게시물 댓글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | LinkedIn 공유 URN(퍼센트 인코딩)——upstream urn 쿼리로 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "7258000000002001",
"platform": "linkedin",
"type": "comment",
"post_id": "7255000000001001",
"author": {
"id": "6155000200",
"username": "linkedin-fan",
"display_name": "LinkedIn 网友",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 12,
"replies": 1
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/linkedin/jobs/{id}linkedin.job채용 상세 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | LinkedIn 채용 어드레싱 키: 채용 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/jobs/1842951234567890123"응답 예제
{
"data": {
"id": "6257000000001001",
"platform": "linkedin",
"type": "job",
"title": "数据平台工程师",
"company": "FetchPI",
"location": "Remote",
"description": "数据平台工程师职位。",
"employment_type": "FULL_TIME",
"posted_at": "2026-09-15T11:20:00Z",
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/linkedin/search/jobslinkedin.search_jobs채용 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/linkedin/search/jobs?q=fetchpi"응답 예제
{
"data": [
{
"id": "6257000000001001",
"platform": "linkedin",
"type": "job",
"title": "数据平台工程师",
"company": "FetchPI",
"location": "Remote",
"description": "数据平台工程师职位。",
"employment_type": "FULL_TIME",
"posted_at": "2026-09-15T11:20:00Z",
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/telegram/channels/{username}telegram.profile채널 정보 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/telegram/channels/newdev"응답 예제
{
"data": {
"id": "8355000122",
"platform": "telegram",
"type": "profile",
"username": "fetchpi_tg",
"display_name": "FetchPI 频道",
"description": "Telegram 频道数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/telegram-fetchpi_tg.jpg",
"verified": false,
"metrics": {
"followers": 230000,
"following": 0,
"posts": 5100
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/telegram/channels/{username}/poststelegram.user_posts채널 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/telegram/channels/newdev/posts"응답 예제
{
"data": [
{
"id": "8359000000001002",
"platform": "telegram",
"type": "post",
"author": {
"id": "8355000122",
"username": "fetchpi_tg",
"display_name": "FetchPI 频道",
"verified": false
},
"text": "频道消息:数据 API 发布。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 0,
"comments": 2,
"shares": 120,
"views": 51000
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/telegram/channels/{username}/posts/{id}telegram.post게시물 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다. |
| id | path | 필수 | string | 텔레그램 메시지 id(upstream post_id 쿼리). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/telegram/channels/newdev/posts/1842951234567890123"응답 예제
{
"data": {
"id": "8359000000001002",
"platform": "telegram",
"type": "post",
"author": {
"id": "8355000122",
"username": "fetchpi_tg",
"display_name": "FetchPI 频道",
"verified": false
},
"text": "频道消息:数据 API 发布。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 0,
"comments": 2,
"shares": 120,
"views": 51000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/telegram/channels/{username}/posts/{id}/commentstelegram.comments게시물 댓글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다. |
| id | path | 필수 | string | 텔레그램 메시지 id(upstream post_id 쿼리). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/telegram/channels/newdev/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "8358000000002001",
"platform": "telegram",
"type": "comment",
"post_id": "8359000000001002",
"author": {
"id": "8355000200",
"username": "tg_fan",
"display_name": "TG 网友",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 8,
"replies": 0
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/telegram/channels/{username}/search/poststelegram.search_posts채널 내 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다. |
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/telegram/channels/newdev/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "8359000000001002",
"platform": "telegram",
"type": "post",
"author": {
"id": "8355000122",
"username": "fetchpi_tg",
"display_name": "FetchPI 频道",
"verified": false
},
"text": "频道消息:数据 API 发布。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 0,
"comments": 2,
"shares": 120,
"views": 51000
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/telegram/channels/{username}/similartelegram.similar_channels유사 채널 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/telegram/channels/newdev/similar"응답 예제
{
"data": [
{
"id": "8355000122",
"platform": "telegram",
"type": "profile",
"username": "fetchpi_tg",
"display_name": "FetchPI 频道",
"description": "Telegram 频道数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/telegram-fetchpi_tg.jpg",
"verified": false,
"metrics": {
"followers": 230000,
"following": 0,
"posts": 5100
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/pipixia/users/{username}pipixia.profile프로필 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/users/newdev"응답 예제
{
"data": {
"id": "9255000122",
"platform": "pipixia",
"type": "profile",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"description": "皮皮虾数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/pipixia-fetchpi.jpg",
"verified": false,
"created_at": "2021-06-30T17:33:20Z",
"metrics": {
"followers": 456000,
"following": 64,
"posts": 1320
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/pipixia/users/{username}/postspipixia.user_posts사용자 작품 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/users/newdev/posts"응답 예제
{
"data": [
{
"id": "9259000000001001",
"platform": "pipixia",
"type": "post",
"author": {
"id": "9255000122",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"verified": false
},
"title": "皮皮虾:数据 API 实战",
"text": "一条关于数据 API 的作品。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 21000,
"comments": 158,
"shares": 74,
"views": 780000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
"duration_ms": 45000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/pipixia/users/{username}/followerspipixia.user_followers팔로워 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/users/newdev/followers"응답 예제
{
"data": [
{
"id": "9255000122",
"platform": "pipixia",
"type": "profile",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"description": "皮皮虾数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/pipixia-fetchpi.jpg",
"verified": false,
"created_at": "2021-06-30T17:33:20Z",
"metrics": {
"followers": 456000,
"following": 64,
"posts": 1320
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/pipixia/users/{username}/followingpipixia.user_following팔로잉 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| username | path | 필수 | string | 피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/users/newdev/following"응답 예제
{
"data": [
{
"id": "9255000122",
"platform": "pipixia",
"type": "profile",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"description": "皮皮虾数据开放。",
"profile_image_url": "https://cdn.example.com/avatar/pipixia-fetchpi.jpg",
"verified": false,
"created_at": "2021-06-30T17:33:20Z",
"metrics": {
"followers": 456000,
"following": 64,
"posts": 1320
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/pipixia/posts/{id}pipixia.post작품 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 피피샤 작품 id(플랫폼 네이티브 cell id). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/posts/1842951234567890123"응답 예제
{
"data": {
"id": "9259000000001001",
"platform": "pipixia",
"type": "post",
"author": {
"id": "9255000122",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"verified": false
},
"title": "皮皮虾:数据 API 实战",
"text": "一条关于数据 API 的作品。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 21000,
"comments": 158,
"shares": 74,
"views": 780000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
"duration_ms": 45000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/pipixia/posts/{id}/commentspipixia.comments작품 댓글 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| id | path | 필수 | string | 피피샤 작품 id(플랫폼 네이티브 cell id). |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/posts/1842951234567890123/comments"응답 예제
{
"data": [
{
"id": "9258000000002001",
"platform": "pipixia",
"type": "comment",
"post_id": "9259000000001001",
"author": {
"id": "9255000200",
"username": "皮皮虾网友",
"display_name": "皮皮虾网友",
"verified": false
},
"text": "讲得清楚,赞。",
"created_at": "2026-09-16T12:01:22Z",
"metrics": {
"likes": 22,
"replies": 1
},
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/pipixia/search/postspipixia.search_posts작품 검색
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| q | query | 필수 | string | 검색 키워드. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
- 400VALIDATION
- 401UNAUTHENTICATED
- 402INSUFFICIENT_CREDITS
- 403FORBIDDEN
- 403CREDITS_FROZEN
- 404DATA_NOT_FOUND
- 429RATE_LIMIT_EXCEEDED
- 502UPSTREAM_ERROR
- 503RATE_LIMITER_UNAVAILABLE
- defaultINTERNAL
404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/search/posts?q=fetchpi"응답 예제
{
"data": [
{
"id": "9259000000001001",
"platform": "pipixia",
"type": "post",
"author": {
"id": "9255000122",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"verified": false
},
"title": "皮皮虾:数据 API 实战",
"text": "一条关于数据 API 的作品。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 21000,
"comments": 158,
"shares": 74,
"views": 780000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
"duration_ms": 45000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"query": "数据",
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 300,
"cache_hit": false
}
}
}/v1/pipixia/hashtags/{tag}pipixia.hashtag해시태그 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| tag | path | 필수 | string | 피피샤 해시태그 id——upstream hashtag_id 쿼리로 그대로 전달됩니다. |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/hashtags/trending"응답 예제
{
"data": {
"id": "9257000000001001",
"platform": "pipixia",
"type": "hashtag",
"name": "数据开放",
"description": "皮皮虾话题面。",
"metrics": {
"views": 88000000,
"posts": 123000
},
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}/v1/pipixia/hashtags/{tag}/postspipixia.hashtag_posts해시태그 게시물 목록
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| tag | path | 필수 | string | 피피샤 해시태그 id——upstream hashtag_id 쿼리로 그대로 전달됩니다. |
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/hashtags/trending/posts"응답 예제
{
"data": [
{
"id": "9259000000001001",
"platform": "pipixia",
"type": "post",
"author": {
"id": "9255000122",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"verified": false
},
"title": "皮皮虾:数据 API 实战",
"text": "一条关于数据 API 的作品。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 21000,
"comments": 158,
"shares": 74,
"views": 780000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
"duration_ms": 45000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/pipixia/homefeedpipixia.homefeed홈 피드 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| limit | query | 선택 | integer = 20 | 페이지 크기(1–100, 기본값 20). |
| cursor | query | 선택 | string | 이전 응답의 next_cursor(불투명한 페이지네이션 커서). |
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/homefeed"응답 예제
{
"data": [
{
"id": "9259000000001001",
"platform": "pipixia",
"type": "post",
"author": {
"id": "9255000122",
"username": "皮皮虾数据站",
"display_name": "皮皮虾数据站",
"verified": false
},
"title": "皮皮虾:数据 API 实战",
"text": "一条关于数据 API 的作品。",
"created_at": "2026-09-16T11:20:00Z",
"metrics": {
"likes": 21000,
"comments": 158,
"shares": 74,
"views": 780000
},
"attachments": [
{
"type": "photo",
"url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
},
{
"type": "video",
"preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
"duration_ms": 45000
}
],
"fetched_at": "2026-09-21T09:00:00Z"
}
],
"next_cursor": null,
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 200,
"cache_hit": false
}
}
}/v1/pipixia/hot-searchpipixia.hot_search핫서치 조회
| 파라미터 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| max_age | query | 선택 | integer | 이 초 이내의 데이터만 허용합니다. freshness가 우선합니다. |
| freshness | query | 선택 | cache | default | live = default | 신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능). |
응답
요청 예제
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
"https://fetchpi.com/v1/pipixia/hot-search"응답 예제
{
"data": {
"platform": "pipixia",
"type": "hot_search",
"words": [
{
"word": "数据开放",
"hot_value": 4821000
},
{
"word": "实体层",
"hot_value": 3120004
}
],
"fetched_at": "2026-09-21T09:00:00Z"
},
"meta": {
"request_id": "req_01HTXQ8Z9HTQ",
"freshness": {
"mode": "default",
"age_seconds": 0,
"source_layer": "upstream",
"stale": false
},
"billing": {
"amount_credits": 100,
"cache_hit": false
}
}
}