▼
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
Esperanto
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
粵語
한국어
Tiếng Việt
ไทย
Bahasa Indonesia
Bahasa Melayu
हिन्दी
Ελληνικά
Polski
Čeština
Українська
Русский
Türkçe
العربية
Kiswahili
ʻŌlelo Hawaiʻi
tlhIngan Hol
כל מה שהטפסים באתר הזה עושים, לסקריפטים. כל תשובה היא JSON, כולל שגיאות, כך שלעולם לא תצטרכו לנחש אם גוף הוא תוצאה או הסבר.
POST לנקודת הקצה עם פרמטרי טופס או עם גוף JSON. שניהם שקולים; בחרו במה שהכלים שלכם מקלים. הפרמטר action בוחר מה לעשות. השתמשו ב---data-urlencode לכל דבר שאדם הקליד — טקסט הדבקה, כתובת URL, תרגום — מפני ש--d שולח את הערך גולמי והוא ייחתך ב-& הראשון. -d רגיל מתאים לערכים קבועים כמו action עצמו. ל-wget אין --data-urlencode בכלל, אז עם wget או שתקודדו ערכים כאלה באחוזים בעצמכם או שתשלחו גוף JSON, שאינו זקוק לקידוד.
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
בגוף טופס & מפריד בין פרמטרים, ו-curl -d אינו מקודד את מה שנותנים לו. כתובת URL עם מחרוזת שאילתה נחתכת לכן ב-& הראשון שלה, והשאר מגיע כפרמטרים נפרדים. השתמשו ב---data-urlencode, או שלחו JSON. פרמטרים תועים נדחים במקום להתעלם מהם, כך שזה נכשל בקול במקום לאחסן חצי קישור.
# 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
אופציונלי. ללא מפתח הבקשה אנונימית ומתנהגת בדיוק כמו מבקר אנונימי — התוצאה ציבורית בכל מקרה, ההבדל היחיד הוא אם היא נוחתת ברשימת הקבצים שלכם. צרו מפתח בדף החשבון ושלחו אותו כאסימון bearer; העברתו כפרמטר apikey עובדת גם כן, אבל מפתח במחרוזת שאילתה מגיע ליומני השרת ולהיסטוריית הדפדפן.
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 | פרמטרים | תיאור |
|---|---|---|
whoami | — | מאשר שמפתח עובד ומדווח על המגבלות הנוכחיות. לא עולה כלום; קראו לו קודם. |
ip | — | מדווח על הכתובת שלכם, ה-PTR שלה, המדינה, המחוז והעיר שאליהם היא ממופה, הקואורדינטות, וה-user agent ששלחתם. לא דורש מפתח ועונה אותו דבר עם או בלי. במכוון צר יותר מדף האתר: ללא WHOIS, ללא אזור DNS וללא בדיקות ברשימות חסימה, כך שקריאה אליו לא עולה לשרת דבר מלבד קריאה ממסד נתונים מקומי. |
upload | file (ניתן לחזרה), resize, lifetime, gallery או g * | מעלה קובץ אחד או יותר. חייב להיות multipart/form-data. ציון שם גלריה מכניס אותם ישירות אליה ומחזיר את המזהה שלה. |
tinyurl | url, lifetime | מקצר כתובת URL. |
hugeurl | url, lifetime | מאריך כתובת URL, באופן אבסורדי, בכוונה. |
paste | content, lifetime | מאחסן בלוק טקסט ומחזיר קישור אליו. |
translate | content, to, from | מתרגם טקסט. to ו-from הם קודים מהפעולה langs — שימו לב שאלה לא תמיד קודי מדינות: דנית היא da, לא dk. אפשר להשמיט את from או לתת auto, שמבקש מהמנוע לזהות את השפה; ציונו נותן תוצאה טובה יותר בטקסט קצר. |
langs | מציג את השפות ש-translate מקבל, כ-supported_langs: אובייקט אחד לכל שפה, קוד לשם, בסדר שבו האתר מציע אותן. לא דורש מפתח API. | |
dyndns | key, ip, format | מעדכן שם DNS דינמי. הפעולה היחידה שאינה דורשת מפתח API: היא נקראת על ידי נתב, שיש לו שדה אחד לכתובת URL ואין לו דרך לשלוח כותרת. key הוא מפתח העדכון לכל שם שמוצג בחשבון שלכם, לא מפתח ה-API שלכם. השמיטו את ip והכתובת שממנה אתם קוראים תשמש. התשובה היא מילת dyndns2 המקובלת — good, nochg, badauth, abuse או dnserr — כטקסט רגיל, מפני שזה מה שנתבים מנתחים; הוסיפו format=json ל-JSON הרגיל. |
listfiles * | page, g | מציג את הקבצים שלכם עם כל מה שחלונית המידע מציגה, בתוספת התמונה הממוזערת והקישור הישיר. g מגביל לגלריה אחת, או none לקבצים שאינם באף גלריה. |
listpastes * | page | מציג את ההדבקות שלכם, עם תצוגה מקדימה של 200 תווים לכל אחת במקום הגוף כולו. |
listurls * | page | מציג את כתובות ה-URL הקצרות והענקיות שלכם, עם הכתובת שאליה כל אחת מצביעה. |
otl * | share | יוצר קישור חד-פעמי לאחד מהקבצים שלכם. כל קריאה יוצרת קישור חדש, כך שמסירת אותו קובץ לשני אנשים נותנת שני קישורים. |
listotl * | page | מציג את הקישורים החד-פעמיים הפעילים שלכם, את הקובץ שאליו כל אחד מצביע, ואם תוקף הקובץ הזה פג מאז. |
listgalleries * | — | מציג את הגלריות שלכם עם המזהים, השמות, מספרי הקבצים ומצב הפרסום שלהן. |
gallery * | g, publish | מדווח על מצב הפרסום של גלריה, ומשנה אותו כשניתן publish. |
move * | share (ניתן לחזרה), gallery או g | מעביר קבצים לגלריה, לפי שם (נוצרת אם חדשה) או לפי מזהה. השמטת שניהם מעבירה אותם חזרה לרשימה הראשית. |
delete * | share (ניתן לחזרה), g, otl, withfiles | מוחק קבצים, הדבקות, כתובות URL קצרות, גלריות, קישורים חד-פעמיים, או כל שילוב. שיתוף מותאם קודם מול הקבצים שלכם ואז מול ההדבקות והקישורים שלכם, כך שהקורא לא צריך למיין אותם לפי סוג. קישורים חד-פעמיים הולכים ב-otl, בנפרד: הסרת קישור לא אמורה להתבלבל עם מחיקת הקובץ שאליו הוא מצביע. |
* הפעולות האלה דורשות מפתח API. הן קוראות או משנות נתונים של חשבון אחד, ולכן אין להן צורה אנונימית.
share ו-g מקבלים שדה חוזר, מערך JSON, או רשימה מופרדת בפסיקים — מה שהכלים שלכם מקלים. כפילויות מתעלמות.
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
בכל מקום שבו גלריה מצוינת — ב-upload או ב-move — היא ניתנת באותן שתי דרכים: g למזהה קיים, או gallery לשם, שנוצר אם הוא חדש. אם שניהם נשלחים, g מנצח. התשובה נושאת את מזהה הגלריה. שימו לב שמחיקת גלריה מסירה רק את הגלריה, ומשאירה את הקבצים שלה ברשימה הראשית — בניגוד לטופס באתר, שמוחק אותם לאחר שאלה. העבירו withfiles=true כדי למחוק גם אותם: סקריפט שמסדר את הקיבוצים שלו לא אמור לאבד את ההעלאות בטעות.
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
העלאות לא יכולות להשתמש בגוף JSON, מפני שקובץ חייב להישלח כ-multipart. חזרו על החלק file כדי לשלוח כמה בבת אחת. כל קובץ מדווח בנפרד: התשובה נושאת רשימת files של אלה שהתקבלו ורשימת rejected של אלה שלא, כך שהצלחה חלקית היא עדיין הצלחה.
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
אין צורת wget לזה. wget אינו יכול לבנות גוף multipart/form-data — אין לו מקבילה ל--F של curl — והעלאות חייבות להיות multipart. השתמשו ב-curl, או הרכיבו את הגוף וה-boundary בעצמכם ושלחו אותו עם --post-file.
אופציונלי בכל פעולה שמאחסנת משהו. מקבל שניות בלבד, או מספר ואחריו m, h או d — אותן צורות שהטפסים באתר מקבלים. השמיטו או העבירו 0 כדי לשמור את הפריט ללא הגבלת זמן.
כל תשובה היא אובייקט JSON עם שדה ok. בהצלחה הוא נושא את התוצאה; בכישלון הוא נושא קוד error יציב ו-message קריא לבני אדם. הסתעפו לפי הקוד, רשמו את ההודעה ביומן.
{"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."}
כשקובץ נושא אותם, listfiles מוסיף file_tags לרשומה שלו: אמן, כותרת ואלבום, שנקראו מ-ID3, הערות Vorbis או אטומי MP4 כשהקובץ הועלה. המפתח נעדר ולא null כשאין מה לדווח, וזה רוב הקבצים, ולכן בדקו אותו לפני שקוראים אותו. גם שדות בודדים עשויים להיות חסרים — לקובץ יכולה להיות כותרת ללא אלבום. שום דבר אחר מהמטא-נתונים של הקובץ אינו נחשף: רכישה ב-iTunes מתעדת את שם הקונה ואת ה-Apple ID שלו, ואלה בכוונה לעולם לא נקראים.
{"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 | תיאור |
|---|---|---|
unknown_action | 400 | אין פעולה כזאת. |
bad_json | 400 | הגוף לא היה JSON תקין, או ששדה הכיל מבנה מקונן. |
unexpected_parameter | 400 | הגיע פרמטר שהפעולה הזאת אינה מקבלת — בדרך כלל & לא מקודד בערך. ההודעה מציינת את הפרמטרים. |
bad_key | 401 | המפתח לא זוהה. מפתח שגוי נדחה במקום להיחשב בשקט לאנונימי. |
bad_url | 400 | כתובת ה-URL פגומה, או משתמשת בסכמה שאינה http(s), ftp או gopher. |
bad_lifetime | 400 | משך החיים לא היה מספר או מספר ואחריו m, h או d. |
no_content | 400 | לא נשלח דבר לאחסון. |
url_too_long | 413 | כתובת ה-URL ארוכה מהמגבלה. |
paste_too_long | 413 | הטקסט גדול ממגבלת ההדבקה. המגבלות נמדדות בבייטים של UTF-8, ולכן טקסט לא-לטיני נספר יותר ממה שמספר התווים שלו מרמז. |
too_many_files | 413 | יותר קבצים ממה שקריאה אחת מקבלת. |
no_usable_files | 415 | כל הקבצים נדחו. בדקו ברשימת rejected מדוע. |
backend_unavailable | 502 | מנוע התרגום לא ענה. |
internal | 500 | משהו נכשל באופן בלתי צפוי. הדבר נרשם ביומן. |
קראו ל-whoami כדי לקרוא את הערכים הנוכחיים במקום לקבע אותם בקוד — הם נקבעים על ידי מפעיל השרת ויכולים להשתנות. גדלים הם בייטים של UTF-8.
0wx.sh עוטף את כל האמור לעיל. זה POSIX shell פשוט שאינו זקוק לדבר מלבד curl, והוא קצר מספיק כדי לקרוא לפני שמריצים — וזה הדבר הנכון לעשות עם סקריפט שיחזיק את מפתח ה-API שלכם. שימו את המפתח ב-OWX_KEY במקום להעביר --key, והוא יישאר מחוץ להיסטוריית המעטפת שלכם.
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 עושה את אותו הדבר כמו לקוח ה-shell, אבל מנתח את התשובה ומדפיס מה השדות אומרים במקום למסור לכם JSON גולמי — הוסיפו --json כשתרצו את הצורה הגולמית. ספרייה סטנדרטית בלבד: ללא requests, אין מה להתקין. אם אתם כותבים לקוח משלכם, הפונקציות send() ו-report() שלו הן החלקים ששווה לקרוא: יחד הן מראות איך לבנות את הבקשה, איך להוציא את ההודעה מבקשה שנכשלה, ומה התשובות מכילות.
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 עושה את אותו הדבר כמו זה של Python ומדפיס את אותו הפלט. מודולי ליבה בלבד — HTTP::Tiny ו-JSON::PP מגיעים עם Perl מאז 5.14, כך שאין מה להתקין. שווה לקרוא לצד לקוח ה-Python אם אתם כותבים לקוח משלכם: שתי השפות נכשלות באופן שונה בבקשה שבורה, ושני הסקריפטים אומרים היכן.
wget https://0wx.es/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
0wx.ps1 הוא המקבילה של לקוח ה-Python ל-Windows: אותן פקודות, אותו פלט, והוא מנתח את התשובה במקום למסור לכם JSON גולמי — הוסיפו --json לשם כך. הוא כתוב ל-Windows PowerShell שכבר נמצא במחשב, כך שאין מה להתקין, והוא רץ ללא שינוי ב-PowerShell 7. ייתכן שתצטרכו Set-ExecutionPolicy -Scope Process Bypass בחלון שממנו אתם מריצים אותו, וזה Windows ששואל אם באמת התכוונתם להריץ סקריפט שהורדתם — שאלה הוגנת, והקובץ קצר מספיק כדי לקרוא קודם.
$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 הוא אותה קבוצת לשוניות כמו לקוח שולחן העבודה, כשלושה קבצים — דף, גיליון סגנון וסקריפט — ללא התקנה, ללא framework, ובלי לטעון דבר משום מקום מלבד האתר הזה. שלושה במקום אחד מפני ש-Content-Security-Policy של האתר אוסר על סקריפט וסגנון מוטבעים, מה ששווה לשמור. אפשר לגרור אליו קבצים. יש לפתוח אותו מכאן ולא לשמור ולפתוח מהדיסק שלכם: ה-API אינו שולח כותרות cross-origin, ולכן הדפדפן שלכם ידחה כל בקשה מעותק מקומי עוד לפני שתצא. המפתח נשמר בזיכרון אלא אם תסמנו את התיבה לזכור אותו.
https://0wx.es/clients/0wx.html
0wx-gui.ps1 הוא אותה קבוצת לשוניות כמו לקוח שולחן העבודה, מצוירת עם WinForms — כלומר אין מה להתקין בכלל, מפני שזה כבר חלק מ-Windows. שימו אותו באותה תיקייה עם 0wx.ps1: החלון שואל את טיפול הבקשות של הקובץ ההוא במקום לשאת עותק שני, ולכן שניהם נדרשים. Windows ישאל לפני הרצת סקריפט שהוא לא כתב, וזו שאלה הוגנת; שני הקבצים קצרים מספיק כדי לקרוא לפני שעונים.
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
0wx-gtk.pl הוא חלון GTK קטן עם לשוניות להעלאה, הדבקה, קיצור ועיון בקבצים שלכם — כרשימה או כגלריה של תמונות ממוזערות, מסוננת לפי גלריה. זה הלקוח היחיד כאן שצריך משהו מותקן — כריכות GTK3 של Perl — מה ששווה לדעת לצד חלון ה-Windows למעלה, שאינו זקוק לדבר. כל השאר שהוא משתמש בו מגיע עם Perl. המפתח מוחזק בזיכרון בלבד: סגירת החלון שוכחת אותו, והגדרת OWX_KEY ממלאת אותו בהפעלה. מה שלא יציג לכם, התשובה הגולמית של השרת נמצאת במרחק לחיצה אחת תחת “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 עושה את מה שהלקוחות האחרים עושים, מהטלפון: העלאה, הדבקה, קיצור, תרגום ועיון בקבצים שלכם כרשימה או כגלריה. שיתוף קובץ אליו מכל אפליקציה אחרת מעלה אותו, ושיתוף טקסט מאחסן אותו כהדבקה. הוא לא נמצא בשום חנות אפליקציות, ולכן המכשיר שלכם יבקש לאשר את ההתקנה — שאלה ששווה להתייחס אליה ברצינות באופן כללי, והסיבה שכל קוד המקור נמצא גם כאן: פתחו אותו ב-Android Studio ובנו אותו בעצמכם במקום לבטוח בקובץ. הבנייה דורשת JDK 21; BUILDING.md שבפנים מסביר מדוע.
https://0wx.es/clients/0wx-android.apk # install it https://0wx.es/clients/0wx-android.zip # build it yourself
בכוונה אין פעולת הבאה מרחוק. היא הייתה גורמת לשרת להביא כתובת URL לפי בחירת הקורא, שהוא משטח תקיפה לזיוף בקשות, וסקריפט יכול לנצל את זה הרבה יותר מטופס. במקום זאת העלו את הקובץ בעצמכם.