Plataforma para Desenvolvedores · API v1

Documentação da API FileMoon

Integre uploads seguros, importação remota de vídeos, gestão de arquivos e processamento HLS ao seu aplicativo.

URL basehttps://filemoon.org/api/v1
Criar Token de API
API v1
FileMoon REST API

Introdução

A API FileMoon é uma API HTTP baseada em JSON para automatizar uploads, gerenciar arquivos da conta e importar URLs diretas de vídeo autorizadas.

URL basehttps://filemoon.org/api/v1
Versão atualv1
Content-Typeapplication/json / multipart/form-data
Security: Use HTTPS em todas as requisições. Nunca exponha tokens em código público, capturas, repositórios ou logs compartilhados.
Primeiros passos

Autenticação

Envie um token de acesso FileMoon no cabeçalho Authorization usando o esquema Bearer.

HTTP Headers
Authorization: Bearer YOUR_FILEMOON_TOKEN
Accept: application/json
Crie o token em Painel do Usuário → API & Remote Upload. O token completo aparece apenas uma vez.

Permissões do token

files:readLer conta, arquivos e status.
files:writeEnviar, atualizar e excluir arquivos da conta.
remote:writeCriar, cancelar e repetir tarefas remotas.
HTTP 429

Limites de requisição

Os limites são aplicados por token e IP. O limite ativo aparece nos cabeçalhos e não ultrapassa 60 requisições por minuto.

Response Headers
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Retry-After: 12
X-Request-ID: 2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda
Após HTTP 429, aguarde o valor de Retry-After.
Primeiros passos

Informações da conta

Retorna conta, total de arquivos, uso de armazenamento e contadores remotos.

GET /account

Parâmetros

Nenhum parâmetro de requisição.

Exemplo de requisição

cURL
curl -sS "https://filemoon.org/api/v1/account" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta

200 JSON
{
  "success": true,
  "data": {
    "id": "rk9zKY45m0lY",
    "username": "example_user",
    "email": "[email protected]",
    "status": true,
    "files": 20,
    "storage_bytes": 1846721934,
    "remote_jobs": {
      "pending": 0,
      "running": 0,
      "completed": 1,
      "failed": 0
    }
  }
}
Arquivos

Listar arquivos

Retorna uma lista paginada. Use search para filtrar por nome.

GET /files

Parâmetros

CampoTipoObrigatórioDescrição
search string Opcional Filter by name or stored filename. Maximum 255 characters.
page integer Opcional Pagination page. Minimum 1.
per_page integer Opcional Results per page. Default 25, maximum 100.

Exemplo de requisição

cURL
curl -sS "https://filemoon.org/api/v1/files?search=sample&per_page=25&page=1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta

200 JSON
{
  "success": true,
  "data": [
    {
      "id": "0JgG7vRZzoYW",
      "name": "sample-video",
      "filename": "sample-video.mp4",
      "mime": "video/mp4",
      "extension": "mp4",
      "size_bytes": 1520849,
      "visibility": "public",
      "password_protected": false,
      "allow_online_watch": true,
      "downloads": 0,
      "stream_views": 0,
      "urls": {
        "page": "https://filemoon.org/0JgG7vRZzoYW/file",
        "watch": "https://filemoon.org/0JgG7vRZzoYW/watch",
        "embed": "https://filemoon.org/0JgG7vRZzoYW/embed"
      }
    }
  ],
  "meta": {
    "current_page": 1,
    "last_page": 1,
    "per_page": 25,
    "total": 1
  }
}
Arquivos

Informações do arquivo

Retorna um arquivo pelo ID público FileMoon.

GET /files/{id}

Parâmetros

CampoTipoObrigatórioDescrição
id string (path) Sim Public FileMoon file ID owned by the authenticated account.

Exemplo de requisição

cURL
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Arquivos

Status do arquivo e HLS

Retorna arquivo e status de conversão HLS.

GET /files/{id}/status

Parâmetros

CampoTipoObrigatórioDescrição
id string (path) Sim Public FileMoon file ID owned by the authenticated account.

Exemplo de requisição

cURL
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW/status" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta

200 JSON
{
  "success": true,
  "data": {
    "file": {
      "id": "0JgG7vRZzoYW",
      "name": "sample-video",
      "allow_online_watch": true
    },
    "conversion": {
      "status": "completed",
      "stage": "adaptive",
      "attempts": 1,
      "duration_seconds": 42,
      "error": null,
      "updated_at": "2026-07-18 19:20:00"
    }
  }
}
Arquivos

Enviar arquivo local

Envie com multipart/form-data. file é obrigatório; visibility aceita 1 ou 0.

POST /files/upload

Parâmetros

CampoTipoObrigatórioDescrição
file binary Sim Local file attached as multipart/form-data.
visibility boolean Opcional Use 1 for public or 0 for private.

Exemplo de requisição

cURL
curl -sS -X POST "https://filemoon.org/api/v1/files/upload" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -F "file=@/path/to/video.mp4" \
  -F "visibility=1"
Arquivos

Atualizar arquivo

Altere metadados suportados. Envie apenas os campos necessários.

PATCH /files/{id}

Parâmetros

CampoTipoObrigatórioDescrição
id string (path) Sim Public FileMoon file ID.
name string Opcional New file name. Maximum 255 characters.
description string|null Opcional File description. Maximum 1000 characters.
visibility boolean Opcional Public or private visibility.
allow_online_watch boolean Opcional Enable or disable online video watch.
password string|null Opcional Set, change or remove the file password.

Exemplo de requisição

cURL
curl -sS -X PATCH "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "updated-video-name",
    "description": "Updated through FileMoon API",
    "visibility": true,
    "allow_online_watch": true
  }'
Arquivos

Excluir arquivo

Exclui permanentemente o arquivo e dados relacionados.

DELETE /files/{id}

Parâmetros

CampoTipoObrigatórioDescrição
id string (path) Sim Public FileMoon file ID.

Exemplo de requisição

cURL
curl -sS -X DELETE "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Upload remoto

Criar tarefas remotas

Adicione uma ou mais URLs à fila. HTTP 202 confirma o processamento em segundo plano.

Aceita URLs públicas e diretas de mídia HTTP/HTTPS. Redes privadas, localhost, metadados de nuvem, redirecionamentos inseguros, scripts e respostas não-vídeo são bloqueados.
POST /remote-uploads

Parâmetros

CampoTipoObrigatórioDescrição
urls array<string> Sim One or more public direct HTTP/HTTPS media URLs.
name string|null Opcional Custom file name. Maximum 240 characters.
description string|null Opcional Description. Maximum 1000 characters.
folder_id integer|null Opcional Folder ID owned by the authenticated user.
visibility boolean Opcional Public or private file.
allow_online_watch boolean Opcional Allow online video playback.
password string|null Opcional Optional file password.
blocked_countries array<string> Opcional Two-letter country codes. Maximum 50 entries.

Exemplo de requisição

cURL
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://cdn.example.com/video.mp4"],
    "name": "remote-video",
    "description": "Imported through FileMoon API",
    "visibility": true,
    "allow_online_watch": true,
    "blocked_countries": ["US", "GB"]
  }'

Exemplo de resposta

202 JSON
{
  "success": true,
  "message": "Remote upload job(s) queued.",
  "data": [
    {
      "id": "d96f9d69-1d44-42eb-89e3-5a62b052e77d",
      "host": "cdn.example.com",
      "name": "remote-video",
      "status": "pending",
      "stage": "queued",
      "attempts": 0,
      "bytes_downloaded": 0,
      "bytes_total": null,
      "progress_percent": null,
      "error": null,
      "file_id": null
    }
  ]
}

Valores de status

pendingrunningcompletedfailedcancelled
Upload remoto

Listar tarefas remotas

Retorna as tarefas remotas da conta com paginação.

GET /remote-uploads

Parâmetros

CampoTipoObrigatórioDescrição
page integer Opcional Pagination page.
per_page integer Opcional Default 25, maximum 100.

Exemplo de requisição

cURL
curl -sS "https://filemoon.org/api/v1/remote-uploads?per_page=25&page=1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Upload remoto

Status do upload remoto

Retorna progresso, etapa, erros e o ID do arquivo criado.

GET /remote-uploads/{id}

Parâmetros

CampoTipoObrigatórioDescrição
id UUID (path) Sim Remote-upload job ID.

Exemplo de requisição

cURL
curl -sS "https://filemoon.org/api/v1/remote-uploads/d96f9d69-1d44-42eb-89e3-5a62b052e77d" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta

200 JSON
{
  "success": true,
  "data": {
    "id": "d96f9d69-1d44-42eb-89e3-5a62b052e77d",
    "host": "cdn.example.com",
    "name": "remote-video",
    "status": "completed",
    "stage": "completed",
    "attempts": 1,
    "bytes_downloaded": 1520849,
    "bytes_total": 1520849,
    "progress_percent": 100,
    "error": null,
    "file_id": "0JgG7vRZzoYW"
  }
}
Upload remoto

Cancelar tarefa remota

Cancela uma tarefa pendente ou solicita o cancelamento de uma tarefa em execução.

POST /remote-uploads/{id}/cancel

Parâmetros

CampoTipoObrigatórioDescrição
id UUID (path) Sim Remote-upload job ID.

Exemplo de requisição

cURL
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/cancel" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Upload remoto

Repetir tarefa remota

Redefine uma tarefa com falha ou cancelada e a coloca novamente na fila.

POST /remote-uploads/{id}/retry

Parâmetros

CampoTipoObrigatórioDescrição
id UUID (path) Sim Remote-upload job ID.

Exemplo de requisição

cURL
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/retry" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
HTTP

Erros e códigos de status

Os erros usam uma estrutura JSON consistente. Guarde request_id para suporte.

401
UNAUTHENTICATED

Missing or invalid Bearer token.

403
TOKEN_DISABLED / TOKEN_EXPIRED

Token disabled, expired, IP blocked or missing permission.

404
NOT_FOUND

Owned file or remote job could not be found.

409
REMOTE_JOB_NOT_CANCELLABLE

The job can no longer be cancelled.

422
VALIDATION_ERROR

Request fields or uploaded file are invalid.

429
RATE_LIMITED

Too many requests. Use Retry-After.

503
API_DISABLED

The administrator temporarily disabled the API.

Exemplo de resposta

Error JSON
{
  "success": false,
  "error": {
    "code": "TOKEN_ABILITY_DENIED",
    "message": "The token does not have the required permission."
  },
  "request_id": "2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda"
}
Referência

Requisitos de segurança

Aplique estas regras na integração.

Mantenha tokens em servidor confiável e revogue tokens expostos.
Use somente as permissões mínimas.
Restrinja tokens a IPs ou CIDR confiáveis quando possível.
Envie somente conteúdo próprio ou autorizado.
cURL · PHP · JavaScript

Exemplos de clientes

Exemplos mínimos de cURL, PHP e JavaScript no servidor.

cURL
curl -sS "https://filemoon.org/api/v1/account" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
PHP 8+
<?php
$token = getenv('FILEMOON_API_TOKEN');

$ch = curl_init('https://filemoon.org/api/v1/account');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Accept: application/json',
    ],
    CURLOPT_TIMEOUT => 30,
]);

$response = curl_exec($ch);
if ($response === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);

$data = json_decode($response, true, 512, JSON_THROW_ON_ERROR);
if ($status >= 400) {
    throw new RuntimeException($data['error']['message'] ?? 'API request failed');
}
print_r($data);
Node.js / Server-side JS
const token = process.env.FILEMOON_API_TOKEN;

const response = await fetch('https://filemoon.org/api/v1/account', {
  headers: {
    Authorization: `Bearer ${token}`,
    Accept: 'application/json'
  }
});

const data = await response.json();
if (!response.ok) {
  throw new Error(data?.error?.message || 'API request failed');
}
console.log(data);
Voltar ao topo