▼
English
Deutsch
Plattdüütsch
Lëtzebuergesch
Nederlands
Dansk
Svenska
Bokmål
Nynorsk
Íslenska
Føroyskt
Español
Català
Galego
Português
Français
Italiano
Latina
Română
Rumantsch
Gaeilge
Suomi
Magyar
Euskara
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
粵語
한국어
Tiếng Việt
ไทย
Bahasa Indonesia
Bahasa Melayu
हिन्दी
Ελληνικά
Polski
Čeština
Українська
Русский
Türkçe
العربية
עברית
Kiswahili
ʻŌlelo Hawaiʻi
tlhIngan Hol
Ĉio, kion la formularoj de ĉi tiu retejo faras, por skriptoj. Ĉiu respondo estas JSON, inkluzive erarojn, do vi neniam devas diveni ĉu korpo estas rezulto aŭ klarigo.
Sendu POST al la finpunkto aŭ per formularaj parametroj aŭ per JSON-korpo. Ambaŭ estas ekvivalentaj; elektu tion, kion viaj iloj faciligas. La parametro action elektas kion fari. Uzu --data-urlencode por ĉio, kion homo tajpis — teksto, URL, traduko — ĉar -d sendas la valoron kruda kaj ĝi estos tranĉita ĉe la unua &. Simpla -d sufiĉas por fiksaj valoroj kiel action mem. wget tute ne havas --data-urlencode, do kun wget aŭ procent-kodu tiajn valorojn mem aŭ sendu JSON-korpon, kiu bezonas neniun kodadon.
curl -X POST https://0wx.eu/api.cgi \
-d action=paste --data-urlencode 'content=hello & world'
curl -X POST https://0wx.eu/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.eu/api.cgi
En formulara korpo & apartigas parametrojn, kaj curl -d ne kodas tion, kion vi donas al ĝi. URL kun demandoĉeno do estas tranĉita ĉe sia unua &, kaj la resto alvenas kiel apartaj parametroj. Uzu --data-urlencode, aŭ sendu JSON. Vagantaj parametroj estas rifuzataj anstataŭ ignorataj, do tio malsukcesas laŭte anstataŭ konservi duonan ligilon.
# wrong -- the value is cut at the &
curl -X POST https://0wx.eu/api.cgi \
-d action=tinyurl -d 'url=https://example.com/?a=1&b=2'
# right
curl -X POST https://0wx.eu/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.eu/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.eu/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.eu/api.cgi
Nedeviga. Sen ŝlosilo peto estas anonima kaj kondutas ĝuste kiel anonima vizitanto — la rezulto estas publika ĉiukaze, la sola diferenco estas ĉu ĝi aperas en via dosierlisto. Kreu ŝlosilon en via kontopaĝo kaj sendu ĝin kiel bearer-ĵetonon; doni ĝin kiel parametron apikey ankaŭ funkcias, sed ŝlosilo en demandoĉeno finiĝas en servilaj protokoloj kaj en la retumila historio.
curl -X POST https://0wx.eu/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-d action=whoami
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=whoami' https://0wx.eu/api.cgi
| action | Parametroj | Priskribo |
|---|---|---|
whoami | — | Konfirmas, ke ŝlosilo funkcias, kaj raportas la nunajn limojn. Kostas nenion; voku ĝin unue. |
ip | — | Raportas vian adreson, ĝian PTR, la landon, regionon kaj urbon, al kiuj ĝi geolokiĝas, la koordinatojn, kaj la user agent, kiun vi sendis. Ne bezonas ŝlosilon kaj respondas same kun aŭ sen ĝi. Intence pli mallarĝa ol la retpaĝo: sen WHOIS, sen DNS-zono kaj sen serĉoj en bloklistoj, do voki ĝin kostas al la servilo nenion krom loka datumbaza lego. |
upload | file (ripetebla), resize, lifetime, gallery aŭ g * | Alŝutas unu aŭ plurajn dosierojn. Devas esti multipart/form-data. Nomi galerion metas ilin rekte en ĝin kaj redonas ĝian identigilon. |
tinyurl | url, lifetime | Mallongigas URL-on. |
hugeurl | url, lifetime | Plilongigas URL-on, absurde, intence. |
paste | content, lifetime | Konservas tekstblokon kaj redonas ligilon al ĝi. |
translate | content, to, from | Tradukas tekston. to kaj from estas kodoj el la ago langs — notu, ke ili ne ĉiam estas landokodoj: la dana estas da, ne dk. from povas esti ellasita aŭ donita kiel auto, kio petas la fonan sistemon rekoni la lingvon; indiki ĝin donas pli bonan rezulton ĉe mallonga teksto. |
langs | Listigas la lingvojn, kiujn translate akceptas, kiel supported_langs: unu objekto por lingvo, kodo al nomo, en la ordo, en kiu la retejo proponas ilin. Ne bezonas API-ŝlosilon. | |
dyndns | key, ip, format | Ĝisdatigas dinamikan DNS-nomon. La sola ago, kiu ne bezonas API-ŝlosilon: ĝin vokas enkursigilo, kiu havas unu kampon por URL kaj neniun manieron sendi kapon. key estas la ĝisdatiga ŝlosilo de ĉiu nomo, montrata en via konto, ne via API-ŝlosilo. Ellasu ip kaj la adreso, de kiu vi vokas, estas uzata. La respondo estas la fakta dyndns2-vorto — good, nochg, badauth, abuse aŭ dnserr — kiel simpla teksto, ĉar tion enkursigiloj analizas; aldonu format=json por la kutima JSON. |
listfiles * | page, g | Listigas viajn dosierojn kun ĉio, kion la informpanelo montras, plus la bildeto kaj la rekta ligilo. g limigas al unu galerio, aŭ none al dosieroj en neniu galerio. |
listpastes * | page | Listigas viajn tekstojn, kun 200-signa antaŭrigardo de ĉiu anstataŭ la tuta korpo. |
listurls * | page | Listigas viajn mallongajn kaj grandegajn URL-ojn, kun la adreso, al kiu ĉiu montras. |
otl * | share | Kreas unufojan ligilon al unu el viaj dosieroj. Ĉiu voko stampas novan, do doni la saman dosieron al du homoj donas du ligilojn. |
listotl * | page | Listigas viajn aktivajn unufojajn ligilojn, la dosieron, al kiu ĉiu montras, kaj ĉu tiu dosiero intertempe eksvalidiĝis. |
listgalleries * | — | Listigas viajn galeriojn kun iliaj identigiloj, nomoj, dosiernombroj kaj publikigstato. |
gallery * | g, publish | Raportas la publikigstaton de galerio, kaj ŝanĝas ĝin kiam publish estas donita. |
move * | share (ripetebla), gallery aŭ g | Movas dosierojn en galerion, laŭ nomo (kreata se nova) aŭ laŭ identigilo. Se ambaŭ estas ellasitaj, ili revenas al la ĉefa listo. |
delete * | share (ripetebla), g, otl, withfiles | Forigas dosierojn, tekstojn, mallongajn URL-ojn, galeriojn, unufojajn ligilojn, aŭ ajnan miksaĵon. Share estas komparata unue kun viaj dosieroj kaj poste kun viaj tekstoj kaj ligiloj, do la vokanto ne devas ordigi ilin laŭ tipo. Unufojaj ligiloj iras aparte en otl: forigi ligilon ne devas esti konfuzebla kun forigi la dosieron, al kiu ĝi montras. |
* Ĉi tiuj agoj bezonas API-ŝlosilon. Ili legas aŭ ŝanĝas la datumojn de unu konto, do ne ekzistas anonima formo de ili.
share kaj g akceptas ripetitan kampon, JSON-tabelon aŭ komodisigitan liston — kion ajn viaj iloj plej faciligas. Duobloj estas ignorataj.
curl -X POST https://0wx.eu/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.eu/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'
curl -X POST https://0wx.eu/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.eu/api.cgi
Kie ajn galerio estas nomata — ĉe upload aŭ ĉe move — ĝi estas donata per la samaj du manieroj: g por ekzistanta identigilo, aŭ gallery por nomo, kiu estas kreata se nova. Se ambaŭ estas senditaj, g venkas. La respondo portas la galerian identigilon. Notu, ke forigi galerion forigas nur la galerion, lasante ĝiajn dosierojn en la ĉefa listo — malkiel la retformularo, kiu forigas ilin post demando. Donu withfiles=true por forigi ankaŭ ilin: skripto, kiu ordigas siajn grupojn, ne devus akcidente perdi la alŝutojn.
curl -X POST https://0wx.eu/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'
curl -X POST https://0wx.eu/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.eu/api.cgi
Alŝutoj ne povas uzi la JSON-korpon, ĉar dosiero devas esti sendita kiel multipart. Ripetu la parton file por sendi plurajn samtempe. Ĉiu dosiero estas raportata aparte: la respondo portas liston files de la akceptitaj kaj liston rejected de la rifuzitaj, do parta sukceso restas sukceso.
curl -X POST https://0wx.eu/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-F action=upload \
-F file=@photo.jpg \
-F file=@notes.txt \
-F lifetime=7d
Ne ekzistas wget-formo de ĉi tio. wget ne povas konstrui korpon multipart/form-data — ĝi ne havas ekvivalenton de la -F de curl — kaj alŝutoj devas esti multipart. Uzu curl, aŭ kunmetu la korpon kaj la limon mem kaj sendu ĝin per --post-file.
Nedeviga ĉe ĉiu ago, kiu konservas ion. Akceptas nudajn sekundojn, aŭ nombron sekvatan de m, h aŭ d — la samajn formojn, kiujn akceptas la retformularoj. Ellasu ĝin aŭ donu 0 por konservi la eron senlime.
Ĉiu respondo estas JSON-objekto kun kampo ok. Ĉe sukceso ĝi portas la rezulton; ĉe malsukceso ĝi portas stabilan kodon error kaj homlegeblan message. Branĉu laŭ la kodo, protokolu la mesaĝon.
{"ok":true,"type":"paste","share":"Ab3xK9pQ",
"url":"https://0wx.eu/p/Ab3xK9pQ","bytes":11}
{"ok":false,"error":"url_too_long",
"message":"URL exceeds the maximum length."}
Kie dosiero portas ilin, listfiles aldonas file_tags al ĝia ero: artisto, titolo kaj albumo, legitaj el ID3, Vorbis-komentoj aŭ MP4-atomoj kiam la dosiero estis alŝutita. La ŝlosilo forestas anstataŭ esti null kiam estas nenio raportenda, kio estas la plimulto de dosieroj, do testu ĝin antaŭ ol legi ĝin. Unuopaj kampoj ankaŭ povas manki — dosiero povas havi titolon kaj neniun albumon. Nenio alia el la metadatumoj de la dosiero estas malkaŝita: iTunes-aĉeto registras la nomon kaj Apple-ID de la aĉetanto, kaj tiuj intence neniam estas legataj.
{"ok":true,"type":"files","total":2,"page":1,"pages":1,"files":[
{"share":"Ab3xK9pQ","name":"autobahn.mp3","mime":"audio/mpeg",
"bytes":8123456,"url":"https://0wx.eu/i/Ab3xK9pQ",
"file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
{"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
"bytes":204800,"url":"https://0wx.eu/i/Zz7yT2mN"}
]}
| error | HTTP | Priskribo |
|---|---|---|
unknown_action | 400 | Tia ago ne ekzistas. |
bad_json | 400 | La korpo ne estis valida JSON, aŭ kampo enhavis nestitan strukturon. |
unexpected_parameter | 400 | Alvenis parametro, kiun ĉi tiu ago ne akceptas — kutime nekodita & en valoro. La mesaĝo nomas la parametrojn. |
bad_key | 401 | La ŝlosilo ne estis rekonita. Malĝusta ŝlosilo estas rifuzata anstataŭ silente traktata kiel anonima. |
bad_url | 400 | La URL estas misformita, aŭ uzas skemon alian ol http(s), ftp aŭ gopher. |
bad_lifetime | 400 | La vivodaŭro ne estis nombro nek nombro sekvata de m, h aŭ d. |
no_content | 400 | Nenio estis sendita por konservi. |
url_too_long | 413 | La URL estas pli longa ol la limo. |
paste_too_long | 413 | La teksto estas pli granda ol la limo por tekstoj. Limoj estas mezurataj en UTF-8-bajtoj, do nelatina teksto kalkuliĝas pli ol ĝia signonombro sugestas. |
too_many_files | 413 | Pli da dosieroj ol unu voko akceptas. |
no_usable_files | 415 | Ĉiuj dosieroj estis rifuzitaj. Rigardu la liston rejected por la kialo. |
backend_unavailable | 502 | La traduka fona sistemo ne respondis. |
internal | 500 | Io neatendite malsukcesis. Ĝi estas protokolita. |
Voku whoami por legi la nunajn valorojn anstataŭ fiksi ilin en la kodo — ilin fiksas la servila mastrumanto kaj ili povas ŝanĝiĝi. Grandoj estas UTF-8-bajtoj.
0wx.sh envolvas ĉion supre. Ĝi estas pura POSIX-ŝelo kaj bezonas nenion krom curl, kaj ĝi estas sufiĉe mallonga por legi antaŭ ol ruli ĝin — kio estas la ĝusta afero ĉe skripto, kiu tenos vian API-ŝlosilon. Metu la ŝlosilon en OWX_KEY anstataŭ doni --key, kaj ĝi restas ekster via ŝela historio.
wget https://0wx.eu/clients/0wx.sh chmod +x 0wx.sh export OWX_KEY=YOUR_KEY ./0wx.sh help ./0wx.sh paste --content 'hello & world'
0wx.py faras la samon kiel la ŝela kliento, sed analizas la respondon kaj presas, kion la kampoj signifas, anstataŭ doni al vi krudan JSON — aldonu --json kiam vi volas la krudan formon. Nur norma biblioteko: neniu requests, nenio instalenda. Se vi skribas propran klienton, ĝiaj funkcioj send() kaj report() estas la partoj legindaj: kune ili montras kiel konstrui la peton, kiel eltiri la mesaĝon el malsukcesinta, kaj kion la respondoj enhavas.
wget https://0wx.eu/clients/0wx.py chmod +x 0wx.py export OWX_KEY=YOUR_KEY ./0wx.py listfiles ./0wx.py listfiles --json | jq '.files[].url'
0wx.pl faras la samon kiel la Python-a kaj presas la saman eligon. Nur kernaj moduloj — HTTP::Tiny kaj JSON::PP venas kun Perl ekde 5.14, do estas nenio instalenda. Leginda apud la Python-kliento, se vi skribas propran: la du lingvoj malsukcesas malsame ĉe rompita peto, kaj ambaŭ skriptoj diras kie.
wget https://0wx.eu/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
0wx.ps1 estas la ekvivalento de la Python-kliento por Windows: samaj komandoj, sama eligo, kaj ĝi analizas la respondon anstataŭ doni al vi krudan JSON — aldonu --json por tio. Ĝi estas skribita por la Windows PowerShell jam en la maŝino, do estas nenio instalenda, kaj ĝi funkcias senŝanĝe en PowerShell 7. Vi eble bezonos Set-ExecutionPolicy -Scope Process Bypass en la fenestro, el kiu vi rulas ĝin; tio estas Windows demandanta ĉu vi vere intencis ruli elŝutitan skripton — justa demando, kaj la dosiero estas sufiĉe mallonga por legi unue.
$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 estas la sama aro de langetoj kiel la labortabla kliento, kiel tri dosieroj — paĝo, stilfolio kaj skripto — sen instalo, sen kadraĵo, kaj nenio ŝargita de ie ajn krom ĉi tiu retejo. Tri anstataŭ unu, ĉar la Content-Security-Policy de la retejo malpermesas enliniajn skripton kaj stilon, kio estas konservinda. Dosieroj povas esti faligitaj sur ĝin. Ĝi devas esti malfermita de ĉi tie anstataŭ konservita kaj malfermita el via disko: la API ne sendas cross-origin-kapojn, do loka kopio havus ĉiun peton rifuzitan de via retumilo antaŭ ol ĝi forirus. La ŝlosilo estas tenata en memoro krom se vi markas la keston por memori ĝin.
https://0wx.eu/clients/0wx.html
0wx-gui.ps1 estas la sama aro de langetoj kiel la labortabla kliento, desegnita per WinForms — kio signifas tute nenion instalendan, ĉar tio jam estas parto de Windows. Metu ĝin en la saman dosierujon kiel 0wx.ps1: la fenestro pruntas la pettraktadon de tiu dosiero anstataŭ porti duan kopion, do ambaŭ estas bezonataj. Windows demandos antaŭ ol ruli skripton, kiun ĝi ne skribis, kio estas justa demando; ambaŭ dosieroj estas sufiĉe mallongaj por legi antaŭ ol respondi.
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
0wx-gtk.pl estas malgranda GTK-fenestro kun langetoj por alŝuti, alglui, mallongigi kaj foliumi viajn dosierojn — kiel listo aŭ kiel galerio de bildetoj, filtrita laŭ galerio. Ĝi estas la sola kliento ĉi tie, kiu bezonas ion instalitan — la GTK3-bindaĵojn de Perl — kio estas sciinda apud la Windows-fenestro supre, ĉar tiu bezonas tute nenion. Ĉio alia, kion ĝi uzas, venas kun Perl. La ŝlosilo estas tenata nur en memoro: fermi la fenestron forgesas ĝin, kaj agordi OWX_KEY plenigas ĝin ĉe starto. Kion ajn ĝi montras al vi, la kruda respondo de la servilo estas unu klakon for sub “Server reply”.
apt install libgtk3-perl # or: dnf install perl-Gtk3 wget https://0wx.eu/clients/0wx-gtk.pl chmod +x 0wx-gtk.pl OWX_KEY=YOUR_KEY ./0wx-gtk.pl
0wx-android.apk faras tion, kion la aliaj klientoj faras, de telefono: alŝuti, alglui, mallongigi, traduki kaj foliumi viajn dosierojn kiel liston aŭ galerion. Kunhavigi dosieron al ĝi el ajna alia aplikaĵo alŝutas ĝin, kaj kunhavigi tekston konservas ĝin kiel tekston. Ĝi ne estas en ajna aplikaĵvendejo, do via aparato demandos ĉu permesi instali ĝin — demando ĝenerale serioze prenenda, kaj la kialo, ke la tuta fontkodo estas ankaŭ ĉi tie: malfermu ĝin en Android Studio kaj konstruu ĝin mem anstataŭ fidi la dosieron. Konstruado bezonas JDK 21; BUILDING.md ene diras kial.
https://0wx.eu/clients/0wx-android.apk # install it https://0wx.eu/clients/0wx-android.zip # build it yourself
Intence ne ekzistas ago por fora alporto. Ĝi igus la servilon alporti URL-on elektitan de la vokanto, kio estas atakebla surfaco por petofalsado, kaj skripto povas peli tion multe pli forte ol formularo. Alŝutu la dosieron mem.