FastPaste API

FastPaste REST API v1

Primeiros Passos

A API FastPaste permite criar, recuperar e excluir pastes programaticamente.

Uma chave de API é necessária. Entre em contato com o administrador.

Autenticação

Todas as requisições de API exigem o cabeçalho X-API-Key:

X-API-Key: lq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Base URL

https://fastpaste.xyz/api/v1

Formato de resposta

Todas as respostas estão no formato JSON:

{ "error": false, "message": "...", "data": { ... } }

POST /api/v1/paste

Cria um novo paste.

Paste de texto (JSON)

ParâmetroTipoObrigatórioDescrição
contentstringSimConteúdo do paste (mín. 3, máx. 4.00 MB)
titlestringNãoTítulo do paste
descriptionstringNãoDescrição (máx. 500 caracteres)
expirystringNãoDuração: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (padrão: 1d)
passwordstringNãoProteção por senha
burnbooleanNãoVer uma vez e excluir. Se true, o paste é excluído automaticamente após a primeira visualização (padrão: false).
encryptbooleanNãoCriptografia ponta a ponta. Se true, o conteúdo deve ser uma string "fpe1:..." criptografada no cliente (veja a seção E2E). Padrão: false.
keystringNãoChave de descriptografia base64url. Opcional; usada apenas para anexar #chave ao link retornado e nunca é armazenada no servidor. Deixe vazia para manter a chave totalmente no cliente.
downloadablebooleanNãoTorna um paste criptografado E2E baixável (padrão: false). Deve ser usado com encrypt=true; em pastes não criptografados não tem efeito e a resposta inclui um aviso (pastes não criptografados sempre podem ser baixados de qualquer forma).
languagestringNãoLinguagem de realce de sintaxe (ex.: python, javascript). Detectada automaticamente se omitida; em E2E é armazenada para realçar após a descriptografia.
publicbooleanNãoSe true, o paste é listado no arquivo público e no sitemap. Por omissão é false. Ignorado se for usada palavra-passe, autodestruição ou encriptação.
slugstringNãoEndereço curto personalizado (p. ex. «as-minhas-notas» → /view/as-minhas-notas). Se estiver ocupado, é atribuído um semelhante.
Exemplo de requisição (cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "content": "print(\"Hello, World!\")", "title": "Test Paste", "expiry": "1d", "burn": true }'
Resposta (201 Created)
{ "error": false, "message": "Paste created successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "sha256": "abc123...", "burn_after_read": true, "encrypted": false, "downloadable": false } }

Upload de arquivo (multipart/form-data)

ParâmetroTipoObrigatórioDescrição
filefileSimArquivo a enviar (máx. 10.00 MB)
descriptionstringNãoDescrição do arquivo
expirystringNãoExpiração
passwordstringNãoProteção por senha
burnbooleanNãoVer uma vez e excluir. Se true, o paste é excluído automaticamente após a primeira visualização (padrão: false).
encryptbooleanNãoCriptografia ponta a ponta. Se true, o conteúdo deve ser uma string "fpe1:..." criptografada no cliente (veja a seção E2E). Padrão: false.
keystringNãoChave de descriptografia base64url. Opcional; usada apenas para anexar #chave ao link retornado e nunca é armazenada no servidor. Deixe vazia para manter a chave totalmente no cliente.
downloadablebooleanNãoTorna um paste criptografado E2E baixável (padrão: false). Deve ser usado com encrypt=true; em pastes não criptografados não tem efeito e a resposta inclui um aviso (pastes não criptografados sempre podem ser baixados de qualquer forma).
Exemplo (arquivo com cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "X-API-Key: lq_your_api_key_here" \ -F "[email protected]" \ -F "expiry=1w"

Criptografia ponta a ponta (E2E)

Criptografe o conteúdo do seu lado com AES-GCM (256 bits) e envie o texto cifrado como content. O servidor armazena apenas os dados criptografados e nunca vê o texto puro. É usado o mesmo formato da interface web.

Formato do texto cifrado: fpe1:<base64(iv)>:<base64(texto cifrado)> — onde iv é um valor aleatório de 12 bytes e o texto cifrado inclui a tag GCM.

A chave de descriptografia nunca é armazenada no servidor. Se você enviar o parâmetro opcional key, a url retornada a contém como #chave e o link fica diretamente utilizável; a chave é usada apenas para montar o link, não é armazenada. Para um E2E mais rígido, omita key e anexe você mesmo a parte #chave ao link.
Download: pastes E2E NÃO podem ser baixados por padrão (/download retorna 403 e download_url é null na resposta). Se criados com downloadable=true, /download entrega o conteúdo criptografado "fpe1:..." (descriptografe-o você mesmo com sua chave); o botão Baixar na página de visualização descriptografa o conteúdo no navegador com a #chave e o baixa como texto puro.
Se downloadable=true for enviado com um paste não criptografado (encrypt=false), a solicitação ainda é aceita, mas a resposta inclui um campo "warning".
Exemplo de requisição (cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "content": "fpe1:<base64-iv>:<base64-ciphertext>", "encrypt": true, "key": "<base64url-key>", "downloadable": true, "expiry": "1d" }'
Resposta (201 Created)
{ "error": false, "message": "Paste created successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g#<base64url-key>", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "sha256": "abc123...", "burn_after_read": false, "encrypted": true, "downloadable": true } }

GET /api/v1/paste/{id}

Recupera os detalhes e o conteúdo de um paste.

Pastes protegidos por senha não podem ser recuperados via API.
Pastes de leitura única são excluídos permanentemente logo após a primeira recuperação bem-sucedida, seja por este endpoint ou por /raw.
Exemplo de requisição (cURL)
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
Resposta (200 OK)
{ "error": false, "data": { "paste_id": "aB3cD4eF5g", "title": "Test Paste", "description": null, "content": "print(\"Hello, World!\")", "content_type": "text", "original_filename": null, "language": "python", "file_size": 22, "sha256": "abc123...", "created_at": "2025-01-01 15:30:00", "expires_at": "2025-01-02 15:30:00", "view_count": 5, "burn_after_read": false, "burned": false, "encrypted": false, "downloadable": false } }

PUT /api/v1/paste/{id}

Atualiza um paste existente (apenas os desta chave de API). Envie apenas os campos a alterar: content (somente texto), title, description, expiry, burn, password, language, downloadable. Se o conteúdo for "fpe1:...", inclua encrypt e key.

Exemplo de requisição (cURL)
curl -X PUT https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "title": "Updated title", "content": "new content", "expiry": "1w" }'
Resposta (200 OK)
{ "error": false, "message": "Paste updated successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "encrypted": false } }

GET /api/v1/pastes

Lista os pastes criados com esta chave de API (mais recentes primeiro). Paginação: page e limit (1–100).

Exemplo de requisição (cURL)
curl "https://fastpaste.xyz/api/v1/pastes?page=1&limit=20" \ -H "X-API-Key: lq_your_api_key_here"
Resposta (200 OK)
{ "error": false, "data": [ { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "title": "Test Paste", "content_type": "text", "language": "python", "file_size": 22, "created_at": "2025-01-01 15:30:00", "expires_at": "2025-01-02 15:30:00", "view_count": 5, "encrypted": false, "downloadable": false } ], "pagination": { "page": 1, "limit": 20, "total": 1, "total_pages": 1 } }

GET /api/v1/paste/{id}/raw

Retorna o conteúdo do paste como texto simples. Adequado para scripts e automação.

Exemplo
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g/raw \ -H "X-API-Key: lq_your_api_key_here"

Resposta: Content-Type: text/plain

DELETE /api/v1/paste/{id}

Exclui um paste. Somente pastes criados com a mesma chave API podem ser excluídos.

Exemplo
curl -X DELETE https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
Resposta (200 OK)
{"error": false, "message": "Paste deleted."}

POST /api/v1/cli

Crie pastes rapidamente pela linha de comando (curl). Envie o conteúdo como corpo bruto via stdin ou como campo de formulário (content/paste/f:1). A resposta padrão é uma URL em texto simples.

A chave de API é opcional: funciona anonimamente sem chave (limite por IP + verificação de conteúdo). Com chave, o uso é atribuído a ela. O acesso anônimo pode ser desativado no painel de administração.

Parâmetro

ParâmetroTipoObrigatórioDescrição
(gövde)raw / formSimConteúdo do paste. Para corpo bruto, recomenda-se text/plain (para preservar = e &).
expirystringNãoDuração: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (padrão: 1d)
titlestringNãoTítulo do paste
langstringNãoLinguagem de realce de sintaxe (ex.: python, javascript). Detectada automaticamente se omitida; em E2E é armazenada para realçar após a descriptografia.
burnbooleanNãoVer uma vez e excluir. Se true, o paste é excluído automaticamente após a primeira visualização (padrão: false).
Exemplo de requisição (cURL)
# stdin → URL (text/plain önerilir) echo "merhaba" | curl -H "Content-Type: text/plain" --data-binary @- https://fastpaste.xyz/api/v1/cli # dosya yükle curl -H "Content-Type: text/plain" --data-binary @app.log https://fastpaste.xyz/api/v1/cli # sprunge/ix.io tarzı echo "merhaba" | curl -F 'f:1=<-' https://fastpaste.xyz/api/v1/cli # seçeneklerle cat x.py | curl -H "Content-Type: text/plain" --data-binary @- 'https://fastpaste.xyz/api/v1/cli?expiry=1w&lang=python' # API anahtarı ile (kota anahtara işlenir) cat x | curl -H "X-API-Key: lq_xxx" -H "Content-Type: text/plain" --data-binary @- https://fastpaste.xyz/api/v1/cli
Resposta
https://fastpaste.xyz/view/aB3cD4eF5g

Accept: application/json veya ?json=1 ile JSON döner. GET /api/v1/cli kullanım örneklerini gösterir.

Extensões de arquivo permitidas

.txt .log .json .xml .yaml .yml .ini .cfg .conf .md .csv .sql .js .ts .html .htm .css .py .java .go .rs .c .cpp .h .hpp .lua .rb .jsx .tsx .vue .svelte .scss .sass .less .toml .gitignore .dockerfile .makefile .bat .ps1 .r .swift .kt .kts .scala .pl .pm .tcl .awk .sed .diff .patch .tf .hcl .proto .graphql .tex .bib .rst .adoc .org .wiki .properties .gradle .cmake .mak

Os arquivos são verificados por extensão e tipo MIME. Somente arquivos de texto/código são aceitos.

Limites de taxa

Limites de taxa separados podem ser definidos para cada chave API:

Tipo de limiteDescrição
Limite por horaMáximo de requisições por hora (0 = ilimitado)
Limite diárioMáximo de requisições por dia
Limite mensalMáximo de requisições por mês

Quando o limite é excedido, é retornada a resposta 429 Too Many Requests.

Códigos de erro

CódigoSignificado
400Requisição inválida (parâmetro ausente ou incorreto)
401Chave API ausente
403Chave API inválida/inativa ou acesso negado
404Paste não encontrado ou expirado
405Método HTTP não permitido
413Tamanho de arquivo muito grande
429Limite de taxa excedido
500Erro do servidor
503API desativada

Notificações Webhook

Uma URL webhook separada pode ser configurada por chave API. Uma requisição POST é enviada quando um novo paste é criado:

{ "event": "paste_created", "paste_id": "aB3cD4eF5g", "type": "text", "source": "api", "api_key_name": "My App", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "created_at": "2025-01-01 15:30:00", "ip": "1.2.3.4" }

Obter uma chave API

Entre em contato com o administrador para obter uma chave API ou aumentar seu limite.

Contatar administrador