{
"openapi": "3.1.2",
"info": {
"title": "Media2URL Developer Platform REST API",
"version": "1.0.0",
"description": "Official REST API for Media2URL external developers and authenticated automation clients. Provides direct Cloudflare R2 presigned file uploads with temporary-to-final object promotion, transactional quota reservations, asset management, version history, duplicate detection, and remote URL imports.",
"contact": {
"name": "Media2URL Developer Platform",
"url": "https://media2url.com/contact",
"email": "[email protected]"
},
"license": {
"name": "Proprietary",
"url": "https://media2url.com/terms"
}
},
"servers": [
{
"url": "https://api.media2url.com/v1",
"description": "Production API v1"
}
],
"security": [
{
"BearerAuth": []
}
],
"paths": {
"/usage": {
"get": {
"operationId": "getUsage",
"summary": "Retrieve Account & API Usage",
"description": "Returns authoritative usage metrics for storage, bandwidth, and monthly upload counts.",
"security": [
{
"BearerAuth": [
"usage:read"
]
}
],
"responses": {
"200": {
"description": "Authoritative usage metrics",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsageResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"429": {
"$ref": "#/components/responses/RateLimited"
}
}
}
},
"/uploads/presign": {
"post": {
"operationId": "presignUpload",
"summary": "Request Direct R2 Upload URL",
"description": "Validates file metadata against account quotas, atomically reserves storage capacity, and generates a short-lived presigned PUT URL targeting a temporary R2 key.",
"security": [
{
"BearerAuth": [
"uploads:write"
]
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresignUploadRequest"
}
}
}
},
"responses": {
"201": {
"description": "Temporary upload URL generated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresignUploadResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"429": {
"$ref": "#/components/responses/RateLimited"
}
}
}
},
"/uploads/finalize": {
"post": {
"operationId": "finalizeUpload",
"summary": "Finalize Upload & Promote Asset",
"description": "Atomically consumes the upload session, validates temporary R2 object size, content type, magic bytes, and blocked fingerprints, promotes the validated bytes into a non-presigned final key, commits quota, and returns the canonical asset links.",
"security": [
{
"BearerAuth": [
"uploads:write"
]
}
],
"parameters": [
{
"name": "Idempotency-Key",
"in": "header",
"required": false,
"schema": {
"type": "string",
"maxLength": 128
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FinalizeUploadRequest"
}
}
}
},
"responses": {
"201": {
"description": "Asset created and promoted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetResource"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"410": {
"$ref": "#/components/responses/Gone"
},
"429": {
"$ref": "#/components/responses/RateLimited"
}
}
}
},
"/uploads/check-duplicate": {
"post": {
"operationId": "checkDuplicate",
"summary": "Check for Duplicate Asset",
"description": "Searches within the authenticated account's scope for an existing asset matching the given SHA-256 checksum and optional byte size.",
"security": [
{
"BearerAuth": [
"assets:read"
]
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckDuplicateRequest"
}
}
}
},
"responses": {
"200": {
"description": "Duplicate detection result",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckDuplicateResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
},
"/assets": {
"get": {
"operationId": "listAssets",
"summary": "List Assets",
"description": "Returns a cursor-paginated list of assets owned by the authenticated account.",
"security": [
{
"BearerAuth": [
"assets:read"
]
}
],
"parameters": [
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"default": 20,
"maximum": 100
}
},
{
"name": "cursor"
}
]
}
}
},
"_note": "Response truncated for documentation purposes"
}
curl --location --request GET 'https://zylalabs.com/api/14137/media2url+cloud+media+ingestion+api/34981/check+api+and+edge+storage+health' --header 'Authorization: Bearer YOUR_API_KEY'
Após se cadastrar, cada desenvolvedor recebe uma chave de acesso à API pessoal, uma combinação única de letras e dígitos para acessar nosso endpoint de API. Para autenticar com a Ingestão de Mídia em Nuvem Media2URL API basta incluir seu token Bearer no cabeçalho Authorization.
| Cabeçalho | Descrição |
|---|---|
Authorization
|
Obrigatório
Deve ser Bearer access_key. Veja "Sua chave de acesso à API" acima quando você estiver inscrito.
|
Sem compromisso de longo prazo. Faça upgrade, downgrade ou cancele a qualquer momento. O teste gratuito inclui até 50 requisições.
Media2URL é uma API REST de geração de links de CDN permanente para ingestão de mídia de desenvolvedores de alto desempenho para imagens, vídeos, áudio, PDF e arquivos
Cada endpoint retorna dados em JSON Por exemplo o endpoint "Verificar Saúde da API e Armazenamento em Nuvem" fornece status operacional e especificações da API enquanto o endpoint "Listar Ativos de Mídia Hospedados" retorna uma lista paginada de arquivos de mídia incluindo seus IDs nomes de arquivo tipos MIME tamanhos e URLs públicas
Os campos principais incluem "id" (identificador do arquivo), "filename" (nome do arquivo), "mimeType" (tipo de arquivo), "sizeBytes" (tamanho do arquivo em bytes) e "publicUrl" (link CDN permanente). Esses campos ajudam a identificar e acessar ativos de mídia de forma eficaz
Os parâmetros variam por endpoint Por exemplo o endpoint "List Hosted Media Assets" suporta parâmetros de paginação como "cursor" para navegar pelos resultados O endpoint "Initialize Presigned R2 Media Upload" pode exigir metadados do arquivo como tipo e tamanho do arquivo para gerar URLs de upload
Os dados de resposta estão estruturados no formato JSON, normalmente contendo um campo de status "ok" indicando sucesso, seguido por campos de dados relevantes. Por exemplo, o endpoint "Obter Metadados de Ativos de Mídia" retorna metadados sobre um arquivo específico, incluindo seu ID, nome do arquivo, tipo MIME e URL pública
Os dados se originam de uploads de usuários para a plataforma Media2URL Cada ativo de mídia é processado e armazenado no Cloudflare R2 garantindo acesso e gerenciamento confiáveis A API mantém a precisão dos dados por meio de verificações automatizadas durante os processos de upload e recuperação
Casos de uso típicos incluem gerenciar ativos de mídia para sites gerar links de CDN para entrega rápida de conteúdo e integrar uploads de mídia em aplicativos Desenvolvedores podem automatizar o manuseio de mídia e garantir acesso eficiente a vários tipos de arquivos
Os usuários podem utilizar os dados retornados integrando-os em suas aplicações para exibir mídias, gerenciar ativos ou criar links para compartilhamento Por exemplo o campo "publicUrl" pode ser usado para incorporar imagens ou vídeos diretamente em páginas da web ou aplicações
Ao lidar com resultados parciais ou vazios, verifique o campo "nextCursor" nas respostas paginadas. Se for nulo, não há mais resultados. Implemente lógica para gerenciar respostas vazias de forma elegante, como exibir uma mensagem indicando que não há ativos de mídia disponíveis