▼
English
Deutsch
Plattdüütsch
Lëtzebuergesch
Nederlands
Dansk
Svenska
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
Alt skjemaene på dette nettstedet gjør, for skript. Hvert svar er JSON, feil inkludert, så du må aldri gjette om en kropp er et resultat eller en forklaring.
POST til endepunktet med enten skjemaparametre eller en JSON-kropp. Begge er likeverdige; velg det verktøyene dine gjør enklest. Parameteren action velger hva som skal gjøres. Bruk --data-urlencode for alt et menneske har skrevet — paste-tekst, en URL, en oversettelse — for -d sender verdien rå, og den blir kuttet ved første &. Vanlig -d er greit for faste verdier som action selv. wget har ikke --data-urlencode i det hele tatt, så med wget må du enten prosentkode slike verdier selv eller sende en JSON-kropp, som ikke trenger noen koding.
curl -X POST https://0wx.es/api.cgi \
-d action=paste --data-urlencode 'content=hello & world'
curl -X POST https://0wx.es/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.es/api.cgi
I en skjemakropp skiller & parametre, og curl -d koder ikke det du gir den. En URL med spørrestreng kuttes derfor ved sitt første &, og resten kommer fram som separate parametre. Bruk --data-urlencode, eller send JSON. Villfarne parametre avvises i stedet for å ignoreres, så dette feiler høylytt i stedet for å lagre en halv lenke.
# wrong -- the value is cut at the &
curl -X POST https://0wx.es/api.cgi \
-d action=tinyurl -d 'url=https://example.com/?a=1&b=2'
# right
curl -X POST https://0wx.es/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.es/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.es/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.es/api.cgi
Valgfritt. Uten nøkkel er en forespørsel anonym og oppfører seg nøyaktig som en anonym besøkende — resultatet er offentlig uansett, den eneste forskjellen er om det havner i fillisten din. Lag en nøkkel på kontosiden din og send den som bearer-token; å sende den som parameteren apikey virker også, men en nøkkel i en spørrestreng havner i serverlogger og nettleserhistorikk.
curl -X POST https://0wx.es/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-d action=whoami
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=whoami' https://0wx.es/api.cgi
| action | Parametre | Beskrivelse |
|---|---|---|
whoami | — | Bekrefter at en nøkkel virker og oppgir gjeldende grenser. Koster ingenting; kall den først. |
ip | — | Oppgir adressen din, dens PTR, landet, regionen og byen den geolokaliseres til, koordinatene og user agent-en du sendte. Krever ingen nøkkel og svarer likt med eller uten. Bevisst smalere enn nettsiden: ingen WHOIS, ingen DNS-sone og ingen blokkeringsliste-oppslag, så et kall koster serveren ingenting annet enn en lokal databaselesing. |
upload | file (kan gjentas), resize, lifetime, gallery eller g * | Laster opp én eller flere filer. Må være multipart/form-data. Oppgis et galleri, legges de rett i det, og id-en returneres. |
tinyurl | url, lifetime | Forkorter en URL. |
hugeurl | url, lifetime | Forlenger en URL, absurd mye, med vilje. |
paste | content, lifetime | Lagrer en tekstblokk og returnerer en lenke til den. |
translate | content, to, from | Oversetter tekst. to og from er koder fra handlingen langs — merk at de ikke alltid er landkoder: dansk er da, ikke dk. from kan utelates eller settes til auto, som ber backend om å gjenkjenne språket; å oppgi det gir bedre resultat på kort tekst. |
langs | Lister språkene translate godtar, som supported_langs: ett objekt per språk, kode til navn, i den rekkefølgen nettstedet tilbyr dem. Krever ingen API-nøkkel. | |
dyndns | key, ip, format | Oppdaterer et dynamisk DNS-navn. Den eneste handlingen som ikke krever API-nøkkel: den kalles av en ruter, som har ett felt for en URL og ingen måte å sende en header på. key er oppdateringsnøkkelen per navn som vises i kontoen din, ikke API-nøkkelen din. Utelat ip, så brukes adressen du kaller fra. Svaret er det de facto dyndns2-ordet — good, nochg, badauth, abuse eller dnserr — som ren tekst, fordi det er det rutere tolker; legg til format=json for vanlig JSON. |
listfiles * | page, g | Lister filene dine med alt Info-panelet viser, pluss miniatyrbilde og direktelenke. g begrenser til ett galleri, eller none til filer uten galleri. |
listpastes * | page | Lister tekstene dine med en forhåndsvisning på 200 tegn av hver i stedet for hele kroppen. |
listurls * | page | Lister de korte og enorme URL-ene dine med adressen hver av dem peker på. |
otl * | share | Oppretter en engangslenke til en av filene dine. Hvert kall lager en ny, så å gi samme fil til to personer gir to lenker. |
listotl * | page | Lister de aktive engangslenkene dine, filen hver av dem peker på, og om den filen siden har utløpt. |
listgalleries * | — | Lister galleriene dine med id-er, navn, filantall og publiseringsstatus. |
gallery * | g, publish | Oppgir et galleris publiseringsstatus, og endrer den når publish er gitt. |
move * | share (kan gjentas), gallery eller g | Flytter filer til et galleri, etter navn (opprettes hvis nytt) eller etter id. Utelates begge, flyttes de tilbake til hovedlisten. |
delete * | share (kan gjentas), g, otl, withfiles | Sletter filer, tekster, korte URL-er, gallerier, engangslenker eller en hvilken som helst blanding. En share matches først mot filene dine og deretter mot tekstene og lenkene dine, så kalleren trenger ikke sortere dem etter type. Engangslenker oppgis separat i otl: å fjerne en lenke må ikke kunne forveksles med å slette filen den peker på. |
* Disse handlingene krever en API-nøkkel. De leser eller endrer én kontos egne data, så det finnes ingen anonym form av dem.
share og g godtar et gjentatt felt, et JSON-array eller en kommaseparert liste — det verktøyene dine gjør enklest. Duplikater ignoreres.
curl -X POST https://0wx.es/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.es/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'
curl -X POST https://0wx.es/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.es/api.cgi
Overalt der et galleri oppgis — ved upload eller ved move — skjer det på de samme to måtene: g for en eksisterende id, eller gallery for et navn, som opprettes hvis det er nytt. Sendes begge, vinner g. Svaret bærer galleri-id-en. Merk at sletting av et galleri bare fjerner galleriet og lar filene bli i hovedlisten — i motsetning til nettskjemaet, som sletter dem etter å ha spurt. Send withfiles=true for å slette dem også: et skript som rydder i grupperingene sine, bør ikke miste opplastinger ved et uhell.
curl -X POST https://0wx.es/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'
curl -X POST https://0wx.es/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.es/api.cgi
Opplastinger kan ikke bruke JSON-kroppen, fordi en fil må sendes som multipart. Gjenta file-delen for å sende flere på én gang. Hver fil rapporteres for seg: svaret bærer en files-liste over de aksepterte og en rejected-liste over de avviste, så en delvis suksess er fortsatt en suksess.
curl -X POST https://0wx.es/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-F action=upload \
-F file=@photo.jpg \
-F file=@notes.txt \
-F lifetime=7d
Det finnes ingen wget-form av denne. wget kan ikke bygge en multipart/form-data-kropp — den har ikke noe motstykke til curls -F — og opplastinger må være multipart. Bruk curl, eller sett sammen kroppen og boundary selv og send det med --post-file.
Valgfritt på alle handlinger som lagrer noe. Godtar rene sekunder, eller et tall etterfulgt av m, h eller d — de samme formene som nettskjemaene. Utelat det eller send 0 for å beholde elementet på ubestemt tid.
Hvert svar er et JSON-objekt med et ok-felt. Ved suksess bærer det resultatet; ved feil bærer det en stabil error-kode og en lesbar message. Forgren på koden, logg meldingen.
{"ok":true,"type":"paste","share":"Ab3xK9pQ",
"url":"https://0wx.es/p/Ab3xK9pQ","bytes":11}
{"ok":false,"error":"url_too_long",
"message":"URL exceeds the maximum length."}
Der en fil bærer dem, legger listfiles til file_tags i oppføringen: artist, tittel og album, lest fra ID3, Vorbis-kommentarer eller MP4-atomer da filen ble lastet opp. Nøkkelen er fraværende heller enn null når det ikke er noe å rapportere, som gjelder de fleste filer, så test for den før du leser den. Enkelte felt kan også mangle — en fil kan ha en tittel og ikke noe album. Ingenting annet fra filens metadata eksponeres: et iTunes-kjøp registrerer kjøperens navn og Apple-ID, og de leses med vilje aldri.
{"ok":true,"type":"files","total":2,"page":1,"pages":1,"files":[
{"share":"Ab3xK9pQ","name":"autobahn.mp3","mime":"audio/mpeg",
"bytes":8123456,"url":"https://0wx.es/i/Ab3xK9pQ",
"file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
{"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
"bytes":204800,"url":"https://0wx.es/i/Zz7yT2mN"}
]}
| error | HTTP | Beskrivelse |
|---|---|---|
unknown_action | 400 | Ingen slik handling. |
bad_json | 400 | Kroppen var ikke gyldig JSON, eller et felt inneholdt en nøstet struktur. |
unexpected_parameter | 400 | Det kom en parameter som denne handlingen ikke tar — vanligvis en ukodet & i en verdi. Meldingen navngir parametrene. |
bad_key | 401 | Nøkkelen ble ikke gjenkjent. En feil nøkkel avvises i stedet for stille å behandles som anonym. |
bad_url | 400 | URL-en er feilformet, eller bruker et annet skjema enn http(s), ftp eller gopher. |
bad_lifetime | 400 | Levetiden var verken et tall eller et tall etterfulgt av m, h eller d. |
no_content | 400 | Ingenting ble sendt for lagring. |
url_too_long | 413 | URL-en er lengre enn grensen. |
paste_too_long | 413 | Teksten er større enn paste-grensen. Grenser måles i UTF-8-byte, så ikke-latinsk tekst teller mer enn antall tegn antyder. |
too_many_files | 413 | Flere filer enn ett kall godtar. |
no_usable_files | 415 | Alle filene ble avvist. Se listen rejected for hvorfor. |
backend_unavailable | 502 | Oversettelses-backend svarte ikke. |
internal | 500 | Noe feilet uventet. Det er logget. |
Kall whoami for å lese gjeldende verdier i stedet for å hardkode dem — de settes av serveroperatøren og kan endre seg. Størrelser er UTF-8-byte.
0wx.sh pakker inn alt ovenfor. Det er ren POSIX-shell, trenger ingenting annet enn curl og er kort nok til å lese før du kjører det — som er det rette å gjøre med et skript som skal holde API-nøkkelen din. Legg nøkkelen i OWX_KEY i stedet for å sende --key, så holdes den utenfor shell-historikken din.
wget https://0wx.es/clients/0wx.sh chmod +x 0wx.sh export OWX_KEY=YOUR_KEY ./0wx.sh help ./0wx.sh paste --content 'hello & world'
0wx.py gjør det samme som shell-klienten, men tolker svaret og skriver ut hva feltene betyr i stedet for å gi deg rå JSON — legg til --json når du vil ha den rå formen tilbake. Bare standardbibliotek: ingen requests, ingenting å installere. Skriver du din egen klient, er funksjonene send() og report() delene verdt å lese: til sammen viser de hvordan forespørselen bygges, hvordan meldingen hentes ut av en mislykket forespørsel, og hva svarene inneholder.
wget https://0wx.es/clients/0wx.py chmod +x 0wx.py export OWX_KEY=YOUR_KEY ./0wx.py listfiles ./0wx.py listfiles --json | jq '.files[].url'
0wx.pl gjør det samme som Python-klienten og skriver ut det samme. Bare kjernemoduler — HTTP::Tiny og JSON::PP har fulgt med Perl siden 5.14, så det er ingenting å installere. Verdt å lese ved siden av Python-klienten hvis du skriver din egen: de to språkene feiler ulikt på en ødelagt forespørsel, og begge skriptene sier hvor.
wget https://0wx.es/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
0wx.ps1 er Python-klientens motstykke for Windows: samme kommandoer, samme utskrift, og den tolker svaret i stedet for å gi deg rå JSON — legg til --json for det. Den er skrevet for den Windows PowerShell som allerede er på maskinen, så det er ingenting å installere, og den kjører uendret på PowerShell 7. Du trenger kanskje Set-ExecutionPolicy -Scope Process Bypass i vinduet du kjører den fra; det er Windows som spør om du virkelig mente å kjøre et skript du lastet ned — et rimelig spørsmål, og filen er kort nok til å lese 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 er det samme settet med faner som skrivebordsklienten, som tre filer — en side, et stilark og et skript — uten installasjon, uten rammeverk, og uten at noe lastes fra andre steder enn dette nettstedet. Tre i stedet for én fordi nettstedets Content-Security-Policy forbyr inline skript og stil, som er verdt å beholde. Filer kan slippes på den. Den må åpnes herfra i stedet for å lagres og åpnes fra disken din: API-et sender ingen cross-origin-headere, så en lokal kopi ville fått hver forespørsel avvist av nettleseren din før den forlot maskinen. Nøkkelen holdes i minnet med mindre du krysser av for å huske den.
https://0wx.es/clients/0wx.html
0wx-gui.ps1 er det samme settet med faner som skrivebordsklienten, tegnet med WinForms — som betyr ingenting å installere i det hele tatt, siden det allerede er en del av Windows. Legg den i samme mappe som 0wx.ps1: vinduet låner den filens forespørselshåndtering i stedet for å bære en ekstra kopi, så begge trengs. Windows vil spørre før det kjører et skript det ikke skrev selv, som er et rimelig spørsmål; begge filene er korte nok til å lese før du svarer.
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
0wx-gtk.pl er et lite GTK-vindu med faner for opplasting, innliming, forkorting og blaing i filene dine — som liste eller som galleri av miniatyrbilder, filtrert etter galleri. Det er den eneste klienten her som trenger noe installert — Perls GTK3-bindinger — som er verdt å vite ved siden av Windows-vinduet ovenfor, siden det ikke trenger noe som helst. Alt annet det bruker følger med Perl. Nøkkelen holdes bare i minnet: å lukke vinduet glemmer den, og å sette OWX_KEY fyller den inn ved oppstart. Uansett hva det viser deg, er serverens rå svar ett klikk unna under “Server reply”.
apt install libgtk3-perl # or: dnf install perl-Gtk3 wget https://0wx.es/clients/0wx-gtk.pl chmod +x 0wx-gtk.pl OWX_KEY=YOUR_KEY ./0wx-gtk.pl
0wx-android.apk gjør det de andre klientene gjør, fra en telefon: laste opp, lime inn, forkorte, oversette og bla i filene dine som liste eller galleri. Å dele en fil til den fra en annen app laster den opp, og å dele tekst lagrer den som tekst. Den ligger ikke i noen appbutikk, så enheten din vil spørre om du tillater installasjonen — et spørsmål som er verdt å ta på alvor generelt, og grunnen til at hele kildekoden også ligger her: åpne den i Android Studio og bygg den selv i stedet for å stole på filen. Bygging krever JDK 21; BUILDING.md inni forteller hvorfor.
https://0wx.es/clients/0wx-android.apk # install it https://0wx.es/clients/0wx-android.zip # build it yourself
Det finnes med vilje ingen handling for fjernhenting. Den ville fått serveren til å hente en URL etter kallerens valg, som er en angrepsflate for request forgery, og et skript kan drive det langt hardere enn et skjema. Last opp filen selv i stedet.