本站解析类接口为直接 GET:拼
type / uid / key / url 即可。
成功看 code=0001 或 200。
返回可能含视频 playAddr、图集 pics、实况 liveAddr(部分平台没有实况,如视频号),请先判空再使用。
完整 GET 地址
https://syapi.chuangye.site/home/api?type=txxw&uid=YOUR_UID&key=YOUR_KEY&url=http%3A%2F%2Fxhslink.com%2Fo%2FANbZ5qEiU4m
curl -G "https://syapi.chuangye.site/home/api" \ --data-urlencode "type=txxw" \ --data-urlencode "uid=YOUR_UID" \ --data-urlencode "key=YOUR_KEY" \ --data-urlencode "url=http://xhslink.com/o/ANbZ5qEiU4m"
const api = 'https://syapi.chuangye.site/home/api';
const params = new URLSearchParams({
type: 'txxw',
uid: 'YOUR_UID',
key: 'YOUR_KEY',
url: 'http://xhslink.com/o/ANbZ5qEiU4m'
});
fetch(api + '?' + params.toString())
.then(r => r.json())
.then(data => {
const ok = data.code === '0001' || data.code === 200 || data.code === '200';
if (!ok) {
console.error('失败:', data.msg || data);
return;
}
// type: 1视频 2图集 3实况(以实际返回为准)
const type = Number(data.type);
const author = (data.author && typeof data.author === 'object') ? data.author : null;
const pics = Array.isArray(data.pics) ? data.pics : [];
// 视频号等平台可能没有 liveAddr 字段
const liveAddr = Array.isArray(data.liveAddr) ? data.liveAddr : [];
const playAddr = data.playAddr || '';
console.log('平台:', data.platform || '');
console.log('类型:', type === 1 ? '视频' : type === 2 ? '图集' : type === 3 ? '实况' : type);
console.log('标题:', data.title || '');
console.log('描述:', data.desc || '');
console.log('封面:', data.cover || '');
console.log('作者昵称:', author ? (author.nickname || '') : '');
console.log('作者名字:', author ? (author.name || '') : '');
console.log('作者头像:', author ? (author.avatar || '') : '');
console.log('作者ID:', author ? (author.author_id || '') : '');
if (playAddr) console.log('视频 playAddr:', playAddr);
if (pics.length) console.log('图集 pics:', pics);
if (liveAddr.length) console.log('实况 liveAddr:', liveAddr);
});
// Node.js 18+(内置 fetch)
const endpoint = 'https://syapi.chuangye.site/home/api';
const params = new URLSearchParams({
type: 'txxw',
uid: 'YOUR_UID',
key: 'YOUR_KEY',
url: 'http://xhslink.com/o/ANbZ5qEiU4m'
});
async function parse() {
const data = await fetch(endpoint + '?' + params.toString()).then((r) => r.json());
const code = String(data.code || '');
if (code !== '0001' && code !== '200') {
console.error('失败:', data.msg || data);
return;
}
const type = Number(data.type);
const author = (data.author && typeof data.author === 'object') ? data.author : null;
const pics = Array.isArray(data.pics) ? data.pics : [];
const liveAddr = Array.isArray(data.liveAddr) ? data.liveAddr : []; // 可能不存在
const playAddr = typeof data.playAddr === 'string' ? data.playAddr : '';
console.log('platform:', data.platform || '');
console.log('type:', type === 1 ? '视频' : type === 2 ? '图集' : type === 3 ? '实况' : String(type || ''));
console.log('title:', data.title || '');
console.log('desc:', data.desc || '');
console.log('cover:', data.cover || '');
console.log('author.nickname:', author ? (author.nickname || '') : '');
console.log('author.name:', author ? (author.name || '') : '');
console.log('author.avatar:', author ? (author.avatar || '') : '');
console.log('author.author_id:', author ? (author.author_id || '') : '');
if (playAddr) console.log('playAddr:', playAddr);
if (pics.length) console.log('pics:', pics);
if (liveAddr.length) console.log('liveAddr:', liveAddr);
}
parse().catch(console.error);
<?php
$endpoint = 'https://syapi.chuangye.site/home/api';
$query = http_build_query([
'type' => 'txxw',
'uid' => 'YOUR_UID',
'key' => 'YOUR_KEY',
'url' => 'http://xhslink.com/o/ANbZ5qEiU4m',
]);
$ch = curl_init($endpoint . '?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
if ($raw === false) {
throw new RuntimeException('请求失败: ' . $err);
}
$data = json_decode($raw, true) ?: [];
$code = (string)($data['code'] ?? '');
if ($code !== '0001' && $code !== '200') {
echo $data['msg'] ?? $raw;
exit;
}
$author = (isset($data['author']) && is_array($data['author'])) ? $data['author'] : [];
$pics = (isset($data['pics']) && is_array($data['pics'])) ? $data['pics'] : [];
$liveAddr = (isset($data['liveAddr']) && is_array($data['liveAddr'])) ? $data['liveAddr'] : [];
$playAddr = (string)($data['playAddr'] ?? '');
$type = (int)($data['type'] ?? 0);
echo "platform: " . ($data['platform'] ?? '') . PHP_EOL;
echo "type: " . $type . " (1视频 2图集 3实况)" . PHP_EOL;
echo "title: " . ($data['title'] ?? '') . PHP_EOL;
if ($playAddr !== '') echo "playAddr: $playAddr" . PHP_EOL;
if ($pics) echo "pics: " . json_encode($pics, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . PHP_EOL;
if ($liveAddr) echo "liveAddr: " . json_encode($liveAddr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . PHP_EOL;
echo "author.nickname: " . ($author['nickname'] ?? '') . PHP_EOL;
import requests
endpoint = "https://syapi.chuangye.site/home/api"
params = {
"type": "txxw",
"uid": "YOUR_UID",
"key": "YOUR_KEY",
"url": "http://xhslink.com/o/ANbZ5qEiU4m",
}
data = requests.get(endpoint, params=params, timeout=30).json()
if str(data.get("code")) not in ("0001", "200"):
print("失败:", data.get("msg") or data)
raise SystemExit(1)
author = data.get("author") if isinstance(data.get("author"), dict) else None
pics = data.get("pics") if isinstance(data.get("pics"), list) else []
live_addr = data.get("liveAddr") if isinstance(data.get("liveAddr"), list) else []
play_addr = data.get("playAddr") or ""
type_code = data.get("type")
print("platform:", data.get("platform") or "")
print("type:", type_code, "(1视频 2图集 3实况)")
print("title:", data.get("title") or "")
print("desc:", data.get("desc") or "")
print("cover:", data.get("cover") or "")
print("author.nickname:", author.get("nickname") if author else "")
print("author.name:", author.get("name") if author else "")
print("author.avatar:", author.get("avatar") if author else "")
print("author.author_id:", author.get("author_id") if author else "")
if play_addr:
print("playAddr:", play_addr)
if pics:
print("pics:", pics)
if live_addr:
print("liveAddr:", live_addr)
# 视频号等没有实况时 live_addr 为空列表,不要强行当实况用
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
public class ParseApiDemo {
public static void main(String[] args) throws Exception {
String endpoint = "https://syapi.chuangye.site/home/api";
String qs = "type=" + enc("txxw")
+ "&uid=" + enc("YOUR_UID")
+ "&key=" + enc("YOUR_KEY")
+ "&url=" + enc("http://xhslink.com/o/ANbZ5qEiU4m");
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endpoint + "?" + qs))
.timeout(Duration.ofSeconds(30))
.GET()
.build();
String body = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString())
.body();
// 建议用 JSON 库解析后判断:
// code、type、playAddr、pics、liveAddr(可能不存在)、author.*
System.out.println(body);
}
private static String enc(String v) {
return URLEncoder.encode(v, StandardCharsets.UTF_8);
}
}
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"time"
)
func main() {
endpoint := "https://syapi.chuangye.site/home/api"
q := url.Values{}
q.Set("type", "txxw")
q.Set("uid", "YOUR_UID")
q.Set("key", "YOUR_KEY")
q.Set("url", "http://xhslink.com/o/ANbZ5qEiU4m")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Get(endpoint + "?" + q.Encode())
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]interface{}
_ = json.Unmarshal(body, &data)
code := fmt.Sprint(data["code"])
if code != "0001" && code != "200" {
fmt.Println("失败:", data["msg"])
return
}
playAddr, _ := data["playAddr"].(string)
pics, _ := data["pics"].([]interface{})
liveAddr, _ := data["liveAddr"].([]interface{}) // 不存在则为 nil
author, _ := data["author"].(map[string]interface{})
fmt.Println("platform:", data["platform"])
fmt.Println("type:", data["type"], "(1视频 2图集 3实况)")
fmt.Println("title:", data["title"])
if playAddr != "" {
fmt.Println("playAddr:", playAddr)
}
if len(pics) > 0 {
fmt.Println("pics:", pics)
}
if len(liveAddr) > 0 {
fmt.Println("liveAddr:", liveAddr)
}
if author != nil {
fmt.Println("author.nickname:", author["nickname"])
}
}
常见问题
如何获取 UID / KEY? 注册并登录后,本页「在线调试」会自动填入;也可在控制台查看。
type 填什么? 填本页编码 txxw,不要填 custom 等调用方式名。
如何计费? 成功调用扣 1 点,失败不扣;可在本页「立即购买」开通包点或包月。
有免费额度吗? 新用户注册即可免费测试:每个独立计费产品赠送 20 次调用额度(失败不扣点),用完后需购买套餐。「共用默认池」产品与短视频共用同一份额度。