▼
English
Deutsch
Plattdüütsch
Lëtzebuergesch
Nederlands
Dansk
Bokmål
Nynorsk
Íslenska
Føroyskt
Español
Català
Galego
Português
Français
Italiano
Latina
Română
Rumantsch
Gaeilge
Suomi
Magyar
Euskara
Esperanto
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
粵語
한국어
Tiếng Việt
ไทย
Bahasa Indonesia
Bahasa Melayu
हिन्दी
Ελληνικά
Polski
Čeština
Українська
Русский
Türkçe
العربية
עברית
Kiswahili
ʻŌlelo Hawaiʻi
tlhIngan Hol
Quenya
Allt formulären på den här webbplatsen gör, för skript. Varje svar är JSON, även fel, så du behöver aldrig gissa om en kropp är ett resultat eller en förklaring.
POST till endpointen med antingen formulärparametrar eller en JSON-kropp. Båda är likvärdiga; välj det dina verktyg gör enklast. Parametern action väljer vad som ska göras. Använd --data-urlencode för allt som en människa har skrivit — paste-text, en URL, en översättning — för -d skickar värdet rått och det klipps vid första &. Vanligt -d duger för fasta värden som action självt. wget har inget --data-urlencode alls, så med wget måste du antingen själv procentkoda sådana värden eller skicka en JSON-kropp, som inte behöver någon kodning.
curl -X POST https://0wx.org/api.cgi \
-d action=paste --data-urlencode 'content=hello & world'
curl -X POST https://0wx.org/api.cgi \
-H 'Content-Type: application/json' \
-d '{"action":"paste","content":"hello & world"}'
wget -qO- --header='Content-Type: application/json' \
--post-data '{"action":"paste","content":"hello & world"}' https://0wx.org/api.cgi
I en formulärkropp skiljer & parametrar åt, och curl -d kodar inte det du ger den. En URL med frågesträng klipps därför vid sitt första &, och resten kommer fram som separata parametrar. Använd --data-urlencode, eller skicka JSON. Vilsna parametrar avvisas i stället för att ignoreras, så detta misslyckas högljutt i stället för att lagra en halv länk.
# wrong -- the value is cut at the &
curl -X POST https://0wx.org/api.cgi \
-d action=tinyurl -d 'url=https://example.com/?a=1&b=2'
# right
curl -X POST https://0wx.org/api.cgi \
-d action=tinyurl --data-urlencode 'url=https://example.com/?a=1&b=2'
# also right -- JSON needs no escaping
curl -X POST https://0wx.org/api.cgi -H 'Content-Type: application/json' \
-d '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}'
# wget has no --data-urlencode, so percent-encode it yourself...
wget -qO- --post-data 'action=tinyurl&url=https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2' https://0wx.org/api.cgi
# ...or send JSON, which needs no encoding at all
wget -qO- --header='Content-Type: application/json' \
--post-data '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}' https://0wx.org/api.cgi
Valfritt. Utan nyckel är en begäran anonym och beter sig exakt som en anonym besökare — resultatet är offentligt hur som helst, den enda skillnaden är om det hamnar i din fillista. Skapa en nyckel på din kontosida och skicka den som bearer-token; att skicka den som parametern apikey fungerar också, men en nyckel i en frågesträng hamnar i serverloggar och webbläsarhistorik.
curl -X POST https://0wx.org/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-d action=whoami
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=whoami' https://0wx.org/api.cgi
| action | Parametrar | Beskrivning |
|---|---|---|
whoami | — | Bekräftar att en nyckel fungerar och rapporterar de aktuella gränserna. Kostar inget; anropa den först. |
ip | — | Rapporterar din adress, dess PTR, landet, regionen och staden den geolokaliseras till, koordinaterna och den user agent du skickade. Kräver ingen nyckel och svarar likadant med eller utan. Avsiktligt smalare än webbsidan: ingen WHOIS, ingen DNS-zon och inga uppslag i blockeringslistor, så ett anrop kostar servern inget mer än en lokal databasläsning. |
upload | file (kan upprepas), resize, lifetime, gallery eller g * | Laddar upp en eller flera filer. Måste vara multipart/form-data. Anges ett galleri läggs de direkt i det och dess id returneras. |
tinyurl | url, lifetime | Förkortar en URL. |
hugeurl | url, lifetime | Förlänger en URL, absurt mycket, med flit. |
paste | content, lifetime | Lagrar ett textblock och returnerar en länk till det. |
translate | content, to, from | Översätter text. to och from är koder från åtgärden langs — observera att de inte alltid är landskoder: danska är da, inte dk. from kan utelämnas eller anges som auto, vilket ber backend att känna igen språket; att ange det ger bättre resultat på kort text. |
langs | Listar de språk translate accepterar, som supported_langs: ett objekt per språk, kod till namn, i den ordning webbplatsen erbjuder dem. Kräver ingen API-nyckel. | |
dyndns | key, ip, format | Uppdaterar ett dynamiskt DNS-namn. Den enda åtgärd som inte kräver API-nyckel: den anropas av en router, som har ett fält för en URL och inget sätt att skicka en header. key är den uppdateringsnyckel per namn som visas i ditt konto, inte din API-nyckel. Utelämna ip så används adressen du anropar från. Svaret är det de facto dyndns2-ordet — good, nochg, badauth, abuse eller dnserr — som ren text, eftersom det är vad routrar tolkar; lägg till format=json för vanlig JSON. |
listfiles * | page, g | Listar dina filer med allt som infopanelen visar, plus miniatyr och direktlänk. g begränsar till ett galleri, eller none till filer utan galleri. |
listpastes * | page | Listar dina texter med en förhandsvisning på 200 tecken av varje i stället för hela kroppen. |
listurls * | page | Listar dina korta och enorma URL:er med adressen var och en pekar på. |
otl * | share | Skapar en engångslänk till en av dina filer. Varje anrop präglar en ny, så att ge samma fil till två personer ger två länkar. |
listotl * | page | Listar dina aktiva engångslänkar, filen var och en pekar på, och om den filen sedan dess har gått ut. |
listgalleries * | — | Listar dina gallerier med id, namn, antal filer och publiceringsstatus. |
gallery * | g, publish | Rapporterar ett galleris publiceringsstatus och ändrar den när publish anges. |
move * | share (kan upprepas), gallery eller g | Flyttar filer till ett galleri, efter namn (skapas om nytt) eller efter id. Utelämnas båda flyttas de tillbaka till huvudlistan. |
delete * | share (kan upprepas), g, otl, withfiles | Tar bort filer, texter, korta URL:er, gallerier, engångslänkar eller vilken blandning som helst. En share matchas först mot dina filer och sedan mot dina texter och länkar, så anroparen behöver inte sortera dem efter typ. Engångslänkar anges separat i otl: att ta bort en länk får inte kunna förväxlas med att radera filen den pekar på. |
* De här åtgärderna kräver en API-nyckel. De läser eller ändrar ett kontos egna data, så det finns ingen anonym form av dem.
share och g accepterar ett upprepat fält, en JSON-array eller en kommaseparerad lista — det dina verktyg gör enklast. Dubbletter ignoreras.
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=move -d share=Ab3xK9pQ -d share=Zz7yT2mN --data-urlencode 'gallery=Holiday 2026'
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'
curl -X POST https://0wx.org/api.cgi -H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_KEY' \
-d '{"action":"move","share":["Ab3xK9pQ","Zz7yT2mN"],"g":7}'
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=delete&share=Ab3xK9pQ,Zz7yT2mN' https://0wx.org/api.cgi
Var ett galleri än anges — vid upload eller vid move — sker det på samma två sätt: g för ett befintligt id, eller gallery för ett namn, som skapas om det är nytt. Skickas båda vinner g. Svaret bär galleri-id:t. Observera att radering av ett galleri bara tar bort galleriet och lämnar dess filer kvar i huvudlistan — till skillnad från webbformuläret, som raderar dem efter att ha frågat. Skicka withfiles=true för att radera dem också: ett skript som städar bland sina grupperingar bör inte tappa uppladdningar av misstag.
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=gallery -d g=7 -d publish=true
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=gallery&g=7&publish=true' https://0wx.org/api.cgi
Uppladdningar kan inte använda JSON-kroppen, eftersom en fil måste skickas som multipart. Upprepa file-delen för att skicka flera på en gång. Varje fil rapporteras för sig: svaret bär en files-lista över de accepterade och en rejected-lista över de avvisade, så en delvis framgång är fortfarande en framgång.
curl -X POST https://0wx.org/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-F action=upload \
-F file=@photo.jpg \
-F file=@notes.txt \
-F lifetime=7d
Det finns ingen wget-form av den här. wget kan inte bygga en multipart/form-data-kropp — den har ingen motsvarighet till curls -F — och uppladdningar måste vara multipart. Använd curl, eller sätt ihop kropp och boundary själv och skicka det med --post-file.
Valfritt i varje åtgärd som lagrar något. Accepterar rena sekunder, eller ett tal följt av m, h eller d — samma former som webbformulären. Utelämna det eller skicka 0 för att behålla objektet på obestämd tid.
Varje svar är ett JSON-objekt med ett ok-fält. Vid framgång bär det resultatet; vid misslyckande bär det en stabil error-kod och ett läsbart message. Förgrena på koden, logga meddelandet.
{"ok":true,"type":"paste","share":"Ab3xK9pQ",
"url":"https://0wx.org/p/Ab3xK9pQ","bytes":11}
{"ok":false,"error":"url_too_long",
"message":"URL exceeds the maximum length."}
Där en fil bär dem lägger listfiles till file_tags i dess post: artist, titel och album, lästa från ID3, Vorbis-kommentarer eller MP4-atomer när filen laddades upp. Nyckeln saknas snarare än är null när det inte finns något att rapportera, vilket gäller de flesta filer, så testa efter den innan du läser den. Enskilda fält kan också saknas — en fil kan ha en titel men inget album. Inget annat ur filens metadata exponeras: ett iTunes-köp registrerar köparens namn och Apple-ID, och de läses med flit aldrig.
{"ok":true,"type":"files","total":2,"page":1,"pages":1,"files":[
{"share":"Ab3xK9pQ","name":"autobahn.mp3","mime":"audio/mpeg",
"bytes":8123456,"url":"https://0wx.org/i/Ab3xK9pQ",
"file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
{"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
"bytes":204800,"url":"https://0wx.org/i/Zz7yT2mN"}
]}
| error | HTTP | Beskrivning |
|---|---|---|
unknown_action | 400 | Ingen sådan åtgärd. |
bad_json | 400 | Kroppen var inte giltig JSON, eller så innehöll ett fält en nästlad struktur. |
unexpected_parameter | 400 | En parameter som den här åtgärden inte tar emot kom in — oftast ett okodat & i ett värde. Meddelandet namnger parametrarna. |
bad_key | 401 | Nyckeln kändes inte igen. En felaktig nyckel avvisas i stället för att tyst behandlas som anonym. |
bad_url | 400 | URL:en är felformad eller använder ett annat schema än http(s), ftp eller gopher. |
bad_lifetime | 400 | Livstiden var varken ett tal eller ett tal följt av m, h eller d. |
no_content | 400 | Inget skickades för lagring. |
url_too_long | 413 | URL:en är längre än gränsen. |
paste_too_long | 413 | Texten är större än paste-gränsen. Gränser mäts i UTF-8-byte, så icke-latinsk text räknas mer än antalet tecken antyder. |
too_many_files | 413 | Fler filer än ett anrop accepterar. |
no_usable_files | 415 | Alla filer avvisades. Se listan rejected för varför. |
backend_unavailable | 502 | Översättningsbackenden svarade inte. |
internal | 500 | Något misslyckades oväntat. Det har loggats. |
Anropa whoami för att läsa de aktuella värdena i stället för att hårdkoda dem — de sätts av serveroperatören och kan ändras. Storlekar är UTF-8-byte.
0wx.sh kapslar in allt ovan. Det är ren POSIX-shell, behöver inget annat än curl och är kort nog att läsa innan du kör det — vilket är rätt sak att göra med ett skript som ska hålla din API-nyckel. Lägg nyckeln i OWX_KEY i stället för att skicka --key, så hålls den utanför din shell-historik.
wget https://0wx.org/clients/0wx.sh chmod +x 0wx.sh export OWX_KEY=YOUR_KEY ./0wx.sh help ./0wx.sh paste --content 'hello & world'
0wx.py gör samma sak som shell-klienten, men tolkar svaret och skriver ut vad fälten betyder i stället för att ge dig rå JSON — lägg till --json när du vill ha den råa formen. Bara standardbibliotek: inget requests, inget att installera. Skriver du din egen klient är dess funktioner send() och report() delarna värda att läsa: tillsammans visar de hur begäran byggs, hur meddelandet plockas ur en misslyckad begäran och vad svaren innehåller.
wget https://0wx.org/clients/0wx.py chmod +x 0wx.py export OWX_KEY=YOUR_KEY ./0wx.py listfiles ./0wx.py listfiles --json | jq '.files[].url'
0wx.pl gör samma sak som Python-klienten och skriver ut samma sak. Bara kärnmoduler — HTTP::Tiny och JSON::PP har följt med Perl sedan 5.14, så det finns inget att installera. Värd att läsa bredvid Python-klienten om du skriver din egen: de två språken misslyckas olika på en trasig begäran, och båda skripten säger var.
wget https://0wx.org/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
0wx.ps1 är Python-klientens motsvarighet för Windows: samma kommandon, samma utdata, och den tolkar svaret i stället för att ge dig rå JSON — lägg till --json för det. Den är skriven för den Windows PowerShell som redan finns på maskinen, så det finns inget att installera, och den kör oförändrad på PowerShell 7. Du kan behöva Set-ExecutionPolicy -Scope Process Bypass i fönstret du kör den från; det är Windows som frågar om du verkligen tänkte köra ett skript du laddat ner — en rimlig fråga, och filen är kort nog att läsa först.
$env:OWX_KEY = 'YOUR_KEY' .\0wx.ps1 listfiles .\0wx.ps1 paste --content 'hello & world' .\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
0wx.html är samma uppsättning flikar som skrivbordsklienten, som tre filer — en sida, en stilmall och ett skript — utan installation, utan ramverk och utan att något laddas från någon annanstans än den här webbplatsen. Tre i stället för en eftersom webbplatsens Content-Security-Policy förbjuder inline-skript och -stil, vilket är värt att behålla. Filer kan släppas på den. Den måste öppnas härifrån i stället för att sparas och öppnas från din disk: API:et skickar inga cross-origin-headrar, så en lokal kopia skulle få varje begäran avvisad av din webbläsare innan den lämnade maskinen. Nyckeln hålls i minnet om du inte kryssar i rutan för att komma ihåg den.
https://0wx.org/clients/0wx.html
0wx-gui.ps1 är samma uppsättning flikar som skrivbordsklienten, ritad med WinForms — vilket betyder inget alls att installera, eftersom det redan är en del av Windows. Lägg den i samma mapp som 0wx.ps1: fönstret lånar den filens hantering av begäranden i stället för att bära med sig en extra kopia, så båda behövs. Windows kommer att fråga innan det kör ett skript det inte skrivit självt, vilket är en rimlig fråga; båda filerna är korta nog att läsa innan du svarar.
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
0wx-gtk.pl är ett litet GTK-fönster med flikar för att ladda upp, klistra in, förkorta och bläddra bland dina filer — som lista eller som galleri av miniatyrer, filtrerat efter galleri. Det är den enda klienten här som behöver något installerat — Perls GTK3-bindningar — vilket är värt att veta bredvid Windows-fönstret ovan, som inte behöver något alls. Allt annat den använder följer med Perl. Nyckeln hålls bara i minnet: att stänga fönstret glömmer den, och att sätta OWX_KEY fyller i den vid start. Vad den än visar dig är serverns råa svar ett klick bort under “Server reply”.
apt install libgtk3-perl # or: dnf install perl-Gtk3 wget https://0wx.org/clients/0wx-gtk.pl chmod +x 0wx-gtk.pl OWX_KEY=YOUR_KEY ./0wx-gtk.pl
0wx-android.apk gör det de andra klienterna gör, från en telefon: ladda upp, klistra in, förkorta, översätta och bläddra bland dina filer som lista eller galleri. Att dela en fil till den från en annan app laddar upp den, och att dela text lagrar den som text. Den finns inte i någon appbutik, så din enhet kommer att fråga om du tillåter installationen — en fråga som är värd att ta på allvar i allmänhet, och anledningen till att hela källkoden också finns här: öppna den i Android Studio och bygg den själv i stället för att lita på filen. Bygget kräver JDK 21; BUILDING.md inuti berättar varför.
https://0wx.org/clients/0wx-android.apk # install it https://0wx.org/clients/0wx-android.zip # build it yourself
Det finns avsiktligt ingen åtgärd för fjärrhämtning. Den skulle få servern att hämta en URL som anroparen väljer, vilket är en angreppsyta för request forgery, och ett skript kan driva det mycket hårdare än ett formulär. Ladda upp filen själv i stället.