EchoLens 文档
文档目录

常规 API

使用 EchoLens Open API,将媒体解析和转录能力接入你的应用或自动化工作流。

认证方式

进入 设置 / API 访问令牌 创建令牌。调用时通过 `Authorization: Bearer` 请求头传入令牌。

快速开始

1. 配置连接参数

ECHOLENS_BASE_URL 是 EchoLens 服务根地址;ECHOLENS_API_TOKEN 请替换为“认证方式”中创建的访问令牌。以下命令仅用于在终端设置这两个环境变量。

export ECHOLENS_BASE_URL="https://echolens.dreamlog.xyz"
export ECHOLENS_API_TOKEN="el_xxx"

2. 调用媒体解析接口

选择所用语言,向 POST /api/open/media/resolve 提交媒体链接列表。将示例中的 inputs 替换为 1 到 10 个抖音或 Bilibili 链接;成功后将按输入顺序获得作者、封面、标题与平台下载资源。

# inputs:抖音或 Bilibili 分享链接列表
curl -X POST "https://echolens.dreamlog.xyz/api/open/media/resolve" \
  -H "Authorization: Bearer $ECHOLENS_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inputs":["https://v.douyin.com/example","https://b23.tv/example"]}'

接口列表

解析媒体

POST/api/open/media/resolve

批量解析最多 10 个抖音或 Bilibili 分享链接,并按输入顺序返回平台、作者、封面、标题及音频、视频地址。

请求示例

# inputs:抖音或 Bilibili 分享链接列表

import os

import requests

response = requests.request(
    "POST",
    "https://echolens.dreamlog.xyz/api/open/media/resolve",
    headers={"Authorization": f"Bearer {os.environ['ECHOLENS_API_TOKEN']}"},
    json={
  "inputs": [
    "https://v.douyin.com/example"
  ]
},
)

print(response.json())

响应结构示例

{
  "media": [
    {
      "source": "douyin",
      "author": {
        "name": "示例作者",
        "avatarUrl": "https://p3-sign.douyinpic.com/example-avatar.jpeg"
      },
      "coverUrl": "https://p3-sign.douyinpic.com/example-cover.jpeg",
      "title": "示例作品标题",
      "downloads": {
        "videoUrl": "https://v3-web.douyinvod.com/example.mp4",
        "audioUrl": "https://public-oss.example.com/echolens/open-api/audio/douyin/123/audio.m4a"
      }
    }
  ]
}

转录音频

POST/api/open/transcripts/transcribe

将抖音或 Bilibili 视频中的音频转写为文本。

请求示例

# input:一个抖音或 Bilibili 分享链接
# model:可选 e1、e2 或 e3

import os

import requests

response = requests.request(
    "POST",
    "https://echolens.dreamlog.xyz/api/open/transcripts/transcribe",
    headers={"Authorization": f"Bearer {os.environ['ECHOLENS_API_TOKEN']}"},
    json={
  "input": "https://v.douyin.com/example",
  "model": "e2"
},
)

print(response.json())

响应结构示例

{
  "media": {
    "source": "douyin",
    "author": {
      "name": "示例作者",
      "avatarUrl": "https://p3-sign.douyinpic.com/example-avatar.jpeg"
    },
    "coverUrl": "https://p3-sign.douyinpic.com/example-cover.jpeg",
    "title": "示例作品标题",
    "downloads": {
      "videoUrl": "https://v3-web.douyinvod.com/example.mp4",
      "audioUrl": "https://public-oss.example.com/echolens/open-api/audio/douyin/123/audio.m4a"
    }
  },
  "transcript": {
    "text": "示例转录文本",
    "model": "qwen3-asr-flash-filetrans",
    "segments": [
      {
        "startSeconds": 0,
        "endSeconds": 3.2,
        "text": "示例转录文本"
      }
    ]
  }
}