SnipHunter API

Extraction

视频、音频和图文内容提取。

Base URL https://api.sniphunter.com

OpenAPI JSON · 完整 Markdown

请求与响应中的 $ref 在 OpenAPI 的 components 中定义。

7 个接口

Extraction

POST/api/v1/extraction/analyze分析 URL(纯素材解析,不下载不上传)

分析 URL 并解析素材元数据与直链。 **仅数据提取**:返回平台 video/audio/cover 直链与标题等元数据。 **不会**下载媒体文件、**不会**上传到对象存储、**不会**做 BGM/ASR。 需要落盘/转存、口播文案、人声分离请走独立原子能力。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ExtractionAnalyzeRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "201": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ExtractionResultResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/extraction/history获取提取历史

获取用户的提取历史

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "platform",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "平台过滤",
        "title": "Platform"
      },
      "description": "平台过滤"
    },
    {
      "name": "status",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "状态过滤",
        "title": "Status"
      },
      "description": "状态过滤"
    },
    {
      "name": "page",
      "in": "query",
      "required": false,
      "schema": {
        "type": "integer",
        "minimum": 1,
        "default": 1,
        "title": "Page"
      }
    },
    {
      "name": "page_size",
      "in": "query",
      "required": false,
      "schema": {
        "type": "integer",
        "maximum": 100,
        "minimum": 1,
        "default": 20,
        "title": "Page Size"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ExtractionListResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/extraction/upload登记本地上传文件(仅登记元数据,不做二次下载/转码)

登记用户上传的媒体文件为一条素材提取记录。 仅保存用户提交的文件到存储并登记元数据(文件本身由客户端提交), **不做**平台下载、BGM 分离、ASR 或二次转码。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "multipart/form-data": {
        "schema": {
          "$ref": "#/components/schemas/Body_upload_file_extraction_api_v1_extraction_upload_post"
        }
      }
    },
    "required": true
  },
  "responses": {
    "201": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ExtractionResultResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/extraction/{extraction_id}获取提取结果

获取提取结果详情

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "extraction_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Extraction Id"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ExtractionResultResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/extraction/{extraction_id}/download/{resource_type}跳转到资源直链

按资源类型 302 跳转到解析得到的直链(服务端不二次拉取/转存)。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "extraction_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Extraction Id"
      }
    },
    {
      "name": "resource_type",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string",
        "title": "Resource Type"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/extraction/{extraction_id}/progress获取提取进度 (SSE)

获取提取进度(Server-Sent Events) 注意: 由于 EventSource 不支持自定义 headers, token 通过 query 参数传递。 资源隔离:鉴权用短会话;SSE 轮询每轮独立开/关 session, 禁止在长连接期间持有 Depends(get_db) 连接。

{
  "parameters": [
    {
      "name": "extraction_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Extraction Id"
      }
    },
    {
      "name": "token",
      "in": "query",
      "required": true,
      "schema": {
        "type": "string",
        "description": "JWT token for SSE authentication",
        "title": "Token"
      },
      "description": "JWT token for SSE authentication"
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/extraction/{extraction_id}/save-to-assets保存到资源库(已下线)

云素材库已下线;请使用各端「我的空间」本地记录。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "extraction_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Extraction Id"
      }
    }
  ],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SaveToAssetsRequest"
        }
      }
    }
  },
  "responses": {
    "410": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SaveToAssetsResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}

数据模型

展开 components
{
  "schemas": {
    "Body_upload_file_extraction_api_v1_extraction_upload_post": {
      "properties": {
        "file": {
          "type": "string",
          "format": "binary",
          "title": "File",
          "description": "上传的视频或音频文件"
        }
      },
      "type": "object",
      "required": [
        "file"
      ],
      "title": "Body_upload_file_extraction_api_v1_extraction_upload_post"
    },
    "ExtractionAnalyzeRequest": {
      "properties": {
        "url": {
          "type": "string",
          "title": "Url",
          "description": "视频/分享 URL"
        },
        "skip_bgm_separation": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Skip Bgm Separation",
          "description": "[已废弃/忽略] /extraction 不做 BGM 分离与任何下载上传。需要人声/伴奏分离请调用独立能力 extract_bgm 或 vocal_separate。",
          "deprecated": true
        }
      },
      "type": "object",
      "required": [
        "url"
      ],
      "title": "ExtractionAnalyzeRequest",
      "description": "分析提取请求:纯解析平台元数据与媒体直链,不下载、不上传对象存储。"
    },
    "ExtractionListResponse": {
      "properties": {
        "results": {
          "items": {
            "$ref": "#/components/schemas/ExtractionResultResponse"
          },
          "type": "array",
          "title": "Results",
          "description": "结果列表"
        },
        "total": {
          "type": "integer",
          "title": "Total",
          "description": "总数"
        },
        "page": {
          "type": "integer",
          "title": "Page",
          "description": "当前页",
          "default": 1
        },
        "page_size": {
          "type": "integer",
          "title": "Page Size",
          "description": "每页数量",
          "default": 20
        }
      },
      "type": "object",
      "required": [
        "results",
        "total"
      ],
      "title": "ExtractionListResponse",
      "description": "提取列表响应"
    },
    "ExtractionResource": {
      "properties": {
        "type": {
          "type": "string",
          "title": "Type",
          "description": "类型: video, audio, bgm, cover, subtitle"
        },
        "format": {
          "type": "string",
          "title": "Format",
          "description": "格式: mp4, mp3, jpg, srt等"
        },
        "quality": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Quality",
          "description": "质量: 1080p, 720p等"
        },
        "size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Size",
          "description": "文件大小(字节)"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Url",
          "description": "下载URL"
        },
        "status": {
          "type": "string",
          "title": "Status",
          "description": "状态: pending, ready, failed",
          "default": "pending"
        }
      },
      "type": "object",
      "required": [
        "type",
        "format"
      ],
      "title": "ExtractionResource",
      "description": "提取资源"
    },
    "ExtractionResultResponse": {
      "properties": {
        "source_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Url",
          "description": "来源URL"
        },
        "source_type": {
          "type": "string",
          "title": "Source Type",
          "description": "来源类型: url, file"
        },
        "platform": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Platform",
          "description": "平台"
        },
        "id": {
          "type": "integer",
          "title": "Id",
          "description": "提取ID"
        },
        "user_id": {
          "type": "integer",
          "title": "User Id",
          "description": "用户ID"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Title",
          "description": "标题"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Description",
          "description": "描述"
        },
        "author": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Author",
          "description": "作者"
        },
        "author_avatar": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Author Avatar",
          "description": "作者头像"
        },
        "author_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Author Id",
          "description": "作者ID"
        },
        "views": {
          "type": "integer",
          "title": "Views",
          "description": "播放量",
          "default": 0
        },
        "likes": {
          "type": "integer",
          "title": "Likes",
          "description": "点赞数",
          "default": 0
        },
        "duration": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Duration",
          "description": "时长(秒)"
        },
        "duration_formatted": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Duration Formatted",
          "description": "格式化时长"
        },
        "thumbnail_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Thumbnail Url",
          "description": "封面图"
        },
        "resources": {
          "items": {
            "$ref": "#/components/schemas/ExtractionResource"
          },
          "type": "array",
          "title": "Resources",
          "description": "资源列表"
        },
        "extracted_text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Extracted Text",
          "description": "提取的文本"
        },
        "status": {
          "type": "string",
          "title": "Status",
          "description": "状态",
          "default": "pending"
        },
        "progress": {
          "type": "integer",
          "title": "Progress",
          "description": "进度",
          "default": 0
        },
        "current_step": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Current Step",
          "description": "当前步骤"
        },
        "error_message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error Message",
          "description": "错误信息"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "title": "Created At",
          "description": "创建时间"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Completed At",
          "description": "完成时间"
        }
      },
      "type": "object",
      "required": [
        "source_type",
        "id",
        "user_id",
        "created_at"
      ],
      "title": "ExtractionResultResponse",
      "description": "提取结果响应"
    },
    "HTTPValidationError": {
      "properties": {
        "detail": {
          "items": {
            "$ref": "#/components/schemas/ValidationError"
          },
          "type": "array",
          "title": "Detail"
        }
      },
      "type": "object",
      "title": "HTTPValidationError"
    },
    "SaveToAssetsRequest": {
      "properties": {
        "resource_types": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Resource Types",
          "description": "要保存的资源类型"
        },
        "folder_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Folder Id",
          "description": "目标文件夹ID"
        }
      },
      "type": "object",
      "required": [
        "resource_types"
      ],
      "title": "SaveToAssetsRequest",
      "description": "保存到资源库请求"
    },
    "SaveToAssetsResponse": {
      "properties": {
        "success": {
          "type": "boolean",
          "title": "Success",
          "description": "是否成功"
        },
        "saved_count": {
          "type": "integer",
          "title": "Saved Count",
          "description": "保存数量",
          "default": 0
        },
        "asset_ids": {
          "items": {
            "type": "integer"
          },
          "type": "array",
          "title": "Asset Ids",
          "description": "资源ID列表"
        }
      },
      "type": "object",
      "required": [
        "success"
      ],
      "title": "SaveToAssetsResponse",
      "description": "保存到资源库响应"
    },
    "ValidationError": {
      "properties": {
        "loc": {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "type": "array",
          "title": "Location"
        },
        "msg": {
          "type": "string",
          "title": "Message"
        },
        "type": {
          "type": "string",
          "title": "Error Type"
        }
      },
      "type": "object",
      "required": [
        "loc",
        "msg",
        "type"
      ],
      "title": "ValidationError"
    }
  },
  "securitySchemes": {
    "HTTPBearer": {
      "type": "http",
      "scheme": "bearer"
    }
  }
}