Skip to content

API ドキュメント

このドキュメントは api.kipfel.link が提供する HTTP API について説明します。

  • ベースパス: /v1, /v2
  • リクエストメソッド: 特に記載がない限り GET
  • レスポンス形式:
    • パース系インターフェースはデフォルトで実際のメディアURLへの 302 リダイレクトを返します
    • json=1json=true を指定するか Accept: application/json ヘッダーを使用すると JSON を返します
  • コンテンツタイプ:
    • JSON インターフェース: application/json
    • 画像プロキシ: 上流の画像タイプをそのまま渡します
    • 背景画像: 静的リソースURLへの 302 を返します

サーバー側で統合する場合は、エラー処理と結果をより安定的に扱える JSON モードを使用することをおすすめします。

基本情報

Base URL

text
メイン: https://api.kipfel.link/
V1 のみ: https://api.kipfel.vrchat.org.cn/

ドメインの説明

ドメイン説明
https://api.kipfel.link/メインサイト、v1 とその他の公開インターフェースをサポート
https://api.kipfel.vrchat.org.cn/v1 API のみサポート、v2 およびその他の追加インターフェースはサポートされていません

共通リクエストヘッダー

http
Accept: application/json

共通クエリパラメータ

パラメータタイプ必須説明
urlstringほとんどのパースインターフェースで必須パースする元のURL、共有テキストと混在可能、サーバーが自動的に実URLを抽出します
jsonstringいいえ1 または true を指定すると 302 リダイレクトの代わりに JSON を強制的に返します
real_ipstringいいえクライアントの実パブリックIP、より正確な地域ノード選択に使用します
typestringいいえパースタイプを指定、一般的な値: videomusicliveplaylistcollection
inumberいいえ音楽プレイリストまたはマルチリソースシナリオのインデックス、1から始める方が安全です

レスポンス規約

1. JSONモードで成功した場合

json
{
  "success": true,
  "url": "https://cdn.example.com/media.mp4"
}

2. デフォルトモードで成功した場合

サーバーは以下を返します:

http
302 Found
Location: https://cdn.example.com/media.mp4

3. エラー

json
{
  "error": true,
  "status": 422,
  "code": "INVALID_URL",
  "message": "提供されたパラメータに有効なURLが含まれていません"
}

セキュリティと制限

レート制限

範囲制限
サイト全体1IPあたり15分で最大150リクエスト
/v1, /v2 API1IPあたり1分で最大50リクエスト

制限がトリガーされた場合は通常 429 Too Many Requests を返します。

著作権とコンプライアンスの制限

以下のソースは直接ブロックされ 451 を返します:

  • 腾讯视频
  • 爱奇艺
  • 优酷
  • 芒果TV
  • 哔哩哔哩番剧
  • 西瓜视频
  • 搜狐视频

サポートされているプラットフォーム

プラットフォームタイプ説明
哔哩哔哩video / live通常の動画、ライブ配信、短縮リンク、一部直リンクをサポート
抖音video / live短縮リンクの展開をサポート
快手video / live動画とライブ配信をサポート
AcFunvideo動画パースをサポート
网易云音乐music / playlistシングルとプレイリストの詳細をサポート
酷狗音乐music音声パースをサポート
咪咕音乐music音声パースをサポート
YouTubevideo / musicYouTube と YouTube Music をサポート
X / Twittervideo公開動画リンクをサポート
Instagramvideo公開動画リンクをサポート

V1 パースインターフェース

GET /v1/vrc

メインの動画パースインターフェース。ショートビデオ、通常の動画、一部のライブ配信リンクに適しています。

クエリパラメータ

パラメータタイプ必須説明
urlstringはい動画またはライブ配信の共有リンク
jsonstringいいえ1 または true の場合 JSON を返します
typestringいいえパースタイプを手動で指定、デフォルトは自動検出、フォールバックは video
real_ipstringいいえクライアントの実パブリックIP

リクエスト例

bash
curl "https://api.kipfel.link/v1/vrc?url=https%3A%2F%2Fwww.bilibili.com%2Fvideo%2FBV1xx411c7mD&json=1"

成功レスポンス

json
{
  "success": true,
  "url": "https://cdn.example.com/video.mp4"
}

メモ

  • b23.tvv.douyin.comyoutu.be などの短縮リンクを自動的に展開
  • ライブ配信リンクを自動的に検出してライブパースロジックに切り替え
  • 対象が既にサポートされているプラットフォームのメディア直リンクの場合は元のURLを直接返します

GET /v1/music

メインの音楽パースインターフェース。シングル、一部プレイリスト内の曲に適しています。

クエリパラメータ

パラメータタイプ必須説明
urlstringはい音楽リンク
inumberいいえプレイリストのトラックインデックス
jsonstringいいえ1 または true の場合 JSON を返します
typestringいいえデフォルトは自動検出、フォールバックは music
real_ipstringいいえクライアントの実パブリックIP

リクエスト例

bash
curl "https://api.kipfel.link/v1/music?url=https%3A%2F%2Fmusic.163.com%2Fsong%3Fid%3D19013859097&json=1"

成功レスポンス

json
{
  "success": true,
  "url": "https://cdn.example.com/audio.mp3"
}

メモ

  • 网易云の songplaylist リンク形式と自動的に互換性あり
  • プレイリストのパースに失敗した場合はシングルパースロジックにフォールバックします
  • i が指定された場合は対応するインデックスのトラックを優先的にパースします

GET /v1/kfc

バックアップの動画パースインターフェース。WebRTC 位置特定ロジックに依存せず、互換性のフォールバックエントリとして適しています。

クエリパラメータ

パラメータタイプ必須説明
urlstringはい対象リンク
jsonstringいいえ1 または true の場合 JSON を返します
typestringいいえタイプを手動で指定可能
inumberいいえ特定のリソースインデックス
real_ipstringいいえクライアントの実パブリックIP

レスポンスメモ

  • type=playlist の場合、直リンクリダイレクトの代わりにプレイリスト詳細 JSON を返します
  • その他のシナリオは /v1/vrc と基本的に同じです

GET /v1/musickfc

バックアップの音楽パースインターフェース、動作は /v1/music と似ています。

クエリパラメータ

パラメータタイプ必須説明
urlstringはい音楽リンク
inumberいいえトラックインデックス
jsonstringいいえ1 または true の場合 JSON を返します
typestringいいえデフォルトは自動検出、フォールバックは music
real_ipstringいいえクライアントの実パブリックIP

GET /v1/collection

動画コレクションをパースして、サブアイテムのリストを返します。

クエリパラメータ

パラメータタイプ必須説明
urlstringはいコレクションページリンク
formatstringいいえjs の場合 JavaScript 配列テキストを返し、それ以外は JSON を返します
real_ipstringいいえクライアントの実パブリックIP

JSONレスポンス例

json
{
  "title": "コレクションタイトル",
  "items": [
    {
      "title": "第1話",
      "url": "https://api.kipfel.link/v1/vrc?url=https%3A%2F%2Fexample.com%2Fitem-1"
    }
  ]
}

JavaScriptレスポンス例

javascript
[
  {
    title: "第1話",
    url: "https://api.kipfel.link/v1/vrc?url=https%3A%2F%2Fexample.com%2Fitem-1"
  }
]

メモ

  • 現在 video タイプとして識別可能なプラットフォームコレクションのみサポート
  • 返される items[].url は既に当サイトの /v1/vrc 呼び出し可能なアドレスに変換されています

GET /v1/playlist-detail

网易云プレイリストの詳細を取得します。

クエリパラメータ

パラメータタイプ必須説明
urlstringはい网易云プレイリストリンク
real_ipstringいいえクライアントの実パブリックIP

レスポンスメモ

このインターフェースはパースノードから返されるプレイリスト詳細を直接透過します。一般的な構造は次のようになります:

json
{
  "title": "プレイリストタイトル",
  "tracks": [
    {
      "index": 1,
      "title": "曲名",
      "artist": "アーティスト",
      "url": "https://cdn.example.com/audio.mp3"
    }
  ]
}

制限

  • 网易云プレイリストのみサポート
  • 非网易云リンクは 422 を返します

V2 補助インターフェース

メモ: 以下の v2 インターフェースは https://api.kipfel.link/ 経由でのみアクセス可能で、https://api.kipfel.vrchat.org.cn/ はサポートされていません。

GET /v2/background/:type/:timestamp?

ランダム背景画像リダイレクトインターフェース。

パスパラメータ

パラメータタイプ必須説明
typestringはいmobile は縦画面、それ以外は横画面として扱います
timestampstringいいえフロントエンドの強制リフレッシュに使用可能、ビジネスロジックには関与しません

レスポンスメモ

  • 成功時は 302 を返し、/assets/background/... または /assets/pin/... にリダイレクト
  • 使用可能な画像が見つからない場合は 404 を返します

一般的なエラーコード

HTTP ステータスビジネスコード説明
403固定コードなし非サポートプラットフォームリンクがリダイレクトで拒否されました
405METHOD_NOT_ALLOWEDurl パラメータキーがありません
418IM_A_TEAPOTurl パラメータが空文字列です
422INVALID_URL入力から有効なURLを抽出できませんでした
422MISSING_PARAMETER必須パラメータがありません
422UNSUPPORTED_PLATFORM現在のプラットフォームまたはリンクタイプはサポートされていません
451CONTENT_RESTRICTED著作権またはコンプライアンスの理由でサポートされていません
500PARSE_ERROR一般的なパース失敗
500COLLECTION_PARSE_ERRORコレクションのパースに失敗しました
500PLAYLIST_ERRORプレイリスト詳細の取得に失敗しました
503NO_NODES_AVAILABLE使用可能なパースノードがありません
504PARSE_ERROR上流のパースノードがタイムアウトまたは接続を拒否しました
429API_LIMIT_EXCEEDEDAPIリクエストが多すぎます

非 Kipfel 社区制作,仅为个人作品