网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Vimeo

2026-03-29 新闻来源:网淘吧 围观:18
电脑广告
手机广告

Vimeo

通过托管的OAuth认证访问Vimeo API。上传和管理视频、创建展示和文件夹、管理点赞和稍后观看列表,并与Vimeo社区互动。

快速开始

# Get current user info
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/vimeo/me')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

基础URL

https://gateway.maton.ai/vimeo/{resource}

网关将请求代理至api.vimeo.com并自动注入您的OAuth令牌。

认证

所有请求都需要在Authorization头部包含Maton API密钥:

Authorization: Bearer $MATON_API_KEY

环境变量:将您的API密钥设置为MATON_API_KEY

export MATON_API_KEY="YOUR_API_KEY"

获取您的API密钥

  1. 登录或在maton.ai
  2. 创建账户前往
  3. maton.ai/settings

复制您的API密钥

连接管理在以下地址管理您的Vimeo OAuth连接:.

列出连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=vimeo&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

创建连接

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'vimeo'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

获取连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "connection": {
    "connection_id": "a6ecb894-3148-4f4c-a54c-e9d917e3f2a9",
    "status": "ACTIVE",
    "creation_time": "2026-02-09T08:56:53.522100Z",
    "last_updated_time": "2026-02-09T08:58:39.407864Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "vimeo",
    "metadata": {}
  }
}

在浏览器中打开返回的网址以完成OAuth授权。

删除连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

指定连接

如果您有多个Vimeo连接,请使用Maton-Connection请求头来指定使用哪一个:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/vimeo/me')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', 'a6ecb894-3148-4f4c-a54c-e9d917e3f2a9')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

如果省略,网关将使用默认(最早创建的)活动连接。

API参考

用户操作

获取当前用户

GET /vimeo/me

响应:

{
  "uri": "/users/254399456",
  "name": "Chris",
  "link": "https://vimeo.com/user254399456",
  "account": "free",
  "created_time": "2026-02-09T07:00:20+00:00",
  "pictures": {...},
  "metadata": {
    "connections": {
      "videos": {"uri": "/users/254399456/videos", "total": 2},
      "albums": {"uri": "/users/254399456/albums", "total": 0},
      "folders": {"uri": "/users/254399456/folders", "total": 0},
      "likes": {"uri": "/users/254399456/likes", "total": 0},
      "followers": {"uri": "/users/254399456/followers", "total": 0},
      "following": {"uri": "/users/254399456/following", "total": 0}
    }
  }
}

根据ID获取用户

GET /vimeo/users/{user_id}

获取用户动态

GET /vimeo/me/feed

视频操作

列出用户视频

GET /vimeo/me/videos

响应:

{
  "total": 2,
  "page": 1,
  "per_page": 25,
  "paging": {
    "next": null,
    "previous": null,
    "first": "/me/videos?page=1",
    "last": "/me/videos?page=1"
  },
  "data": [
    {
      "uri": "/videos/1163160198",
      "name": "My Video",
      "description": "Video description",
      "link": "https://vimeo.com/1163160198",
      "duration": 20,
      "width": 1920,
      "height": 1080,
      "created_time": "2026-02-09T07:05:00+00:00"
    }
  ]
}

获取视频

GET /vimeo/videos/{video_id}

搜索视频

GET /vimeo/videos?query=nature&per_page=10

查询参数:

  • 查询- 搜索查询
  • 每页数量- 每页结果数(最多100)
  • 页码- 页码
  • 排序- 排序方式:相关度日期字母顺序播放量点赞数评论数时长
  • 排序方向- 排序方向:升序降序

更新视频

PATCH /vimeo/videos/{video_id}
Content-Type: application/json

{
  "name": "New Video Title",
  "description": "Updated description"
}

删除视频

DELETE /vimeo/videos/{video_id}

操作成功时返回 204 No Content。

文件夹操作(项目)

列出文件夹

GET /vimeo/me/folders

响应:

{
  "total": 1,
  "page": 1,
  "per_page": 25,
  "data": [
    {
      "uri": "/users/254399456/projects/28177219",
      "name": "My Folder",
      "created_time": "2026-02-09T08:59:20+00:00",
      "privacy": {"view": "nobody"},
      "manage_link": "https://vimeo.com/user/254399456/folder/28177219"
    }
  ]
}

创建文件夹

POST /vimeo/me/folders
Content-Type: application/json

{
  "name": "New Folder"
}

更新文件夹

PATCH /vimeo/me/projects/{project_id}
Content-Type: application/json

{
  "name": "Renamed Folder"
}

删除文件夹

DELETE /vimeo/me/projects/{project_id}

操作成功时返回 204 No Content。

获取文件夹视频

GET /vimeo/me/projects/{project_id}/videos

添加视频到文件夹

PUT /vimeo/me/projects/{project_id}/videos/{video_id}

操作成功时返回 204 No Content。

从文件夹移除视频

DELETE /vimeo/me/projects/{project_id}/videos/{video_id}

专辑操作(展示柜)

列出专辑

GET /vimeo/me/albums

创建专辑

POST /vimeo/me/albums
Content-Type: application/json

{
  "name": "My Showcase",
  "description": "A collection of videos"
}

响应:

{
  "uri": "/users/254399456/albums/12099981",
  "name": "My Showcase",
  "description": "A collection of videos",
  "created_time": "2026-02-09T09:00:00+00:00"
}

更新专辑

PATCH /vimeo/me/albums/{album_id}
Content-Type: application/json

{
  "name": "Updated Showcase Name"
}

删除专辑

DELETE /vimeo/me/albums/{album_id}

操作成功时返回 204 No Content。

获取专辑视频

GET /vimeo/me/albums/{album_id}/videos

添加视频到专辑

PUT /vimeo/me/albums/{album_id}/videos/{video_id}

操作成功时返回 204 No Content。

从相册中移除视频

DELETE /vimeo/me/albums/{album_id}/videos/{video_id}

评论

获取视频评论

GET /vimeo/videos/{video_id}/comments

添加评论

POST /vimeo/videos/{video_id}/comments
Content-Type: application/json

{
  "text": "Great video!"
}

响应:

{
  "uri": "/videos/1163160198/comments/21372988",
  "text": "Great video!",
  "created_on": "2026-02-09T09:05:00+00:00"
}

删除评论

DELETE /vimeo/videos/{video_id}/comments/{comment_id}

成功时返回 204 No Content。

点赞

获取已点赞的视频

GET /vimeo/me/likes

点赞视频

PUT /vimeo/me/likes/{video_id}

成功时返回 204 No Content。

取消点赞视频

DELETE /vimeo/me/likes/{video_id}

成功时返回 204 No Content。

稍后观看

获取稍后观看列表

GET /vimeo/me/watchlater

添加到稍后观看

PUT /vimeo/me/watchlater/{video_id}

成功时返回 204 No Content。

从稍后观看中移除

DELETE /vimeo/me/watchlater/{video_id}

成功时返回 204 No Content。

粉丝与关注

获取粉丝列表

GET /vimeo/me/followers

获取关注列表

GET /vimeo/me/following

关注用户

PUT /vimeo/me/following/{user_id}

取消关注用户

DELETE /vimeo/me/following/{user_id}

频道与分类

列出所有频道

GET /vimeo/channels

获取频道

GET /vimeo/channels/{channel_id}

列出所有分类

GET /vimeo/categories

响应:

{
  "total": 10,
  "data": [
    {"uri": "/categories/animation", "name": "Animation"},
    {"uri": "/categories/comedy", "name": "Comedy"},
    {"uri": "/categories/documentary", "name": "Documentary"}
  ]
}

获取分类视频

GET /vimeo/categories/{category}/videos

分页

Vimeo 使用基于页面的分页:

GET /vimeo/me/videos?page=1&per_page=25

响应:

{
  "total": 50,
  "page": 1,
  "per_page": 25,
  "paging": {
    "next": "/me/videos?page=2",
    "previous": null,
    "first": "/me/videos?page=1",
    "last": "/me/videos?page=2"
  },
  "data": [...]
}

参数:

  • 页码- 页码(默认为 1)
  • 每页条数- 每页结果数(默认为 25,最大 100)

代码示例

JavaScript

const response = await fetch(
  'https://gateway.maton.ai/vimeo/me/videos',
  {
    headers: {
      'Authorization': `Bearer ${process.env.MATON_API_KEY}`
    }
  }
);
const data = await response.json();

Python

import os
import requests

response = requests.get(
    'https://gateway.maton.ai/vimeo/me/videos',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}
)
data = response.json()

Python(创建文件夹)

import os
import requests

response = requests.post(
    'https://gateway.maton.ai/vimeo/me/folders',
    headers={
        'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
        'Content-Type': 'application/json'
    },
    json={'name': 'New Folder'}
)
folder = response.json()
print(f"Created folder: {folder['uri']}")

Python(更新视频)

import os
import requests

video_id = "1163160198"
response = requests.patch(
    f'https://gateway.maton.ai/vimeo/videos/{video_id}',
    headers={
        'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
        'Content-Type': 'application/json'
    },
    json={
        'name': 'Updated Title',
        'description': 'New description'
    }
)
video = response.json()
print(f"Updated video: {video['name']}")

注意事项

  • 视频 ID 是数字(例如:1163160198
  • 用户 ID 是数字(例如:254399456在API路径中,文件夹被称为"projects"
  • 在Vimeo用户界面中,相册也被称为"Showcases"
  • 成功执行DELETE和PUT操作时会返回204 No Content状态
  • 视频上传需要使用TUS协议(本文不涉及此内容)
  • 频率限制因账户类型而异
  • 重要提示:当将curl输出通过管道传递给
  • jq或其他命令时,某些shell环境中可能无法正确展开$MATON_API_KEY这类环境变量错误处理

状态码

含义400
缺少Vimeo连接或请求错误401
Maton API密钥无效或缺失403
权限不足或范围不符404
未找到资源Resource not found
429请求频率受限
4xx/5xx 错误来自 Vimeo API 的透传错误

Vimeo 错误包含详细消息:

{
  "error": "Your access token does not have the \"create\" scope"
}

故障排除:API 密钥问题

  1. 检查MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
  1. 通过列出连接来验证 API 密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

故障排除:无效的应用名称

  1. 确保您的 URL 路径以vimeo开头。例如:
  • 正确示例:https://gateway.maton.ai/vimeo/me/videos
  • 错误示例:https://gateway.maton.ai/me/videos

资源

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Usdc Hackathon 下一篇:gembox-skill

相关文章

您是本站第300345名访客 今日有72篇新文章/评论