דילוג לתוכן
תיעוד ה־API

ה־API של Reely

סרטון מדבר נכנס, ריל בעברית יוצא: כתוביות, כותרת פתיחה, מוזיקה והסרת שקטים, בכל הפורמטים. המחיר ידוע לפני החיוב, ומפתח הבדיקה חינמי.

כתובת בסיס
https://app.reely.co.il/api/v1
אימות
Authorization: Bearer rly_…
כסף
באגורות: 1320 הם ₪13.20

מפתח בדיקה או מפתח חי

מפתח בדיקה (rly_test_…) חינמי: הוא מחזיר ריל קטן עם סימן מים, בלי מוזיקה, B-roll או קריינות, עד 20 רינדורים ביום. מפתח חי (rly_live_…) מחייב את היתרה שלכם, באותו מחיר כמו באפליקציה.

רואים את המפתח פעם אחת, כשהוא נוצר. שמרו אותו במשתנה סביבה, לא בקוד ולא בדפדפן. ליצירת מפתח

קריאה ראשונה

GET /v1/me מחזיר את החשבון שמאחורי המפתח. אם הוא עונה, הכול מחובר.

מי אני

export REELY_API_KEY='rly_test_…'

curl 'https://app.reely.co.il/api/v1/me' \
  -H "Authorization: Bearer $REELY_API_KEY"

מסרטון לריל

  1. מעלים את הקובץ

    מבקשים כתובת העלאה, ושולחים אליה את הקובץ ב־PUT עם הכותרות שב־headers. עד 500MB, ב־MP4, MOV או WebM. בחיבור לא יציב, multipart: true מחזיר כתובת לכל חלק של 16MB.

    כתובת העלאה

    curl -X POST 'https://app.reely.co.il/api/v1/uploads' \
      -H "Authorization: Bearer $REELY_API_KEY" \
      -H "Idempotency-Key: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{
      "filename": "talk.mp4",
      "size_bytes": 48213504,
      "content_type": "video/mp4"
    }'

    העלאת הקובץ

    curl -X PUT "$UPLOAD_URL" \
      -H "Content-Type: video/mp4" \
      --data-binary @talk.mp4
  2. יוצרים סרטון

    POST /v1/videos עם ה־upload_id. Reely בודק את הקובץ, מתמלל בעברית ומציע כותרות. זה חינם.

    סרטון מההעלאה

    curl -X POST 'https://app.reely.co.il/api/v1/videos' \
      -H "Authorization: Bearer $REELY_API_KEY" \
      -H "Idempotency-Key: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{
      "upload_id": "vid_8f14e45f-ceea-4e7a-9b1c-2f7a0c3d9e61"
    }'
  3. מחכים שיהיה מוכן

    בודקים את GET /v1/videos/{video_id} כל כמה שניות, עד ש־status הוא ready. התמלול מחכה ב־/transcription.

    מצב הסרטון

    curl 'https://app.reely.co.il/api/v1/videos/vid_8f14e45f-ceea-4e7a-9b1c-2f7a0c3d9e61' \
      -H "Authorization: Bearer $REELY_API_KEY"
  4. מתמחרים

    POST /v1/renders/estimate מחזיר את המחיר המדויק, לפי אורך הריל הסופי והתוספות. הציגו אותו לפני שממשיכים.

    הערכת מחיר

    curl -X POST 'https://app.reely.co.il/api/v1/renders/estimate' \
      -H "Authorization: Bearer $REELY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "video_id": "vid_8f14e45f-ceea-4e7a-9b1c-2f7a0c3d9e61",
      "style": "karaoke",
      "extras": {
        "broll": {
          "on": true
        }
      }
    }'
  5. מאשרים במחיר

    POST /v1/renders עם expected_amount_agorot מההערכה ו־Idempotency-Key. הסכום נשמר עכשיו, נגבה כשהריל מוכן, ומשתחרר אם הרינדור נכשל. אם המחיר השתנה בינתיים, לא נגבה כלום והתשובה היא 409 price-changed עם המחיר החדש.

    רינדור

    curl -X POST 'https://app.reely.co.il/api/v1/renders' \
      -H "Authorization: Bearer $REELY_API_KEY" \
      -H "Idempotency-Key: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{
      "video_id": "vid_8f14e45f-ceea-4e7a-9b1c-2f7a0c3d9e61",
      "expected_amount_agorot": 1320,
      "style": "karaoke",
      "hook": "שלוש טעויות שעולות לכם כסף",
      "extras": {
        "broll": {
          "on": true
        }
      }
    }'
  6. מורידים

    בודקים את GET /v1/renders/{render_id} עד ש־status הוא done, ואז מורידים מ־download_url. /formats מכין 4:5, 1:1, 16:9 ו־4:3 בחינם, ו־/captions.srt מחזיר את הכתוביות.

    מצב הרינדור

    curl 'https://app.reely.co.il/api/v1/renders/ren_c9f0f895-fb98-4b91-8f2e-6d1b7a3c4e52' \
      -H "Authorization: Bearer $REELY_API_KEY"

ניסיון חוזר בלי חיוב כפול

כל קריאה שיוצרת משהו מקבלת Idempotency-Key: מחרוזת ייחודית לבקשה, למשל UUID. ברינדור זו חובה. אם החיבור נפל, שלחו שוב את אותה בקשה עם אותו מפתח: תקבלו את התשובה הראשונה, והחיוב לא יוכפל. אותו מפתח עם בקשה אחרת מחזיר 422 idempotency-key-reused.

שגיאות

כל שגיאה היא application/problem+json לפי RFC 9457: type קבוע שמוביל להסבר, title באנגלית, detail בעברית שאפשר להציג למשתמש, ו־call_id שמוצאים ביומן הקריאות. כשלא נגבה כסף, זה כתוב בהסבר של כל שגיאה.

402, אין מספיק יתרה

{
  "type": "https://app.reely.co.il/developers/docs/errors#insufficient-credits",
  "title": "Insufficient credits",
  "status": 402,
  "detail": "אין מספיק יתרה לרינדור הזה.",
  "code": "insufficient-credits",
  "available_agorot": 600,
  "shortfall_agorot": 720,
  "call_id": "call_5f2c8a91d3e04b7a9c1e6f20"
}

כל השגיאות ומה עושים בכל אחת

קצב, תקציבים ומגבלות

  • 120 קריאות בדקה לכל מפתח, מהן 30 שעולות כסף. כל תשובה מחזירה RateLimit-Limit, RateLimit-Remaining ו־RateLimit-Reset, ומעבר למגבלה מקבלים 429 עם Retry-After.
  • לפרויקט יש תקציב חודשי. ב־80% וב־100% נשלחת התראה, וכשהוא נגמר, קריאות שעולות כסף נעצרות לפני כל חיוב.
  • למפתח אפשר לתת מגבלת חיוב כוללת ותאריך תפוגה. החלפת סוד משאירה את הישן פעיל עוד 24 שעות, כדי שתספיקו לעדכן.

מה עוד

  • הפניה מלאה

    כל נתיב, כל שדה וכל תשובה, מתוך אותו מקור שה־API עצמו בודק מולו.

    להפניה
  • יכולות ומחירים

    מה כל קריאה עושה, ומה כל דבר עולה, מהמחירון שהאפליקציה מחייבת לפיו.

    ליכולות
  • OpenAPI 3.1

    לייצור לקוח, ל־Postman או לכל כלי שקורא את התקן.

    openapi.json
  • מסוף המפתחים

    מפתחות, פרויקטים עם תקציב, ויומן של כל קריאה: מה נשלח, מה חזר ומה חויב.

    למסוף