/pingΈλεγχος ότι το key είναι έγκυρο. Χωρίς πεδία.
response
- ok: true
API v1
Version 1 (v1) — additive only: νεά endpoints και προαιρετικά πεδία προστίθενται, ποτέ δεν αφαιρείται ή αλλάζει κάτι που υπάρχει.
Το πιο σύντομο δρόμος: βρείτε ένα προϊόν, δημιουργήστε παραγγελία, παρακολουθήστε μέχρι το delivered και κατεβάστε το βίντεο.
Κάθε κλήση στέλνει το API key σας στο Authorization header, τύπου Bearer. Δεν υπάρχουν cookies, δεν υπάρχει CORS — το API καλείται από backend/server, όχι από browser του τελικού χρήστη. Το key δίνει πρόσβαση ΜΟΝΟ στον δικό σας λογαριασμό: κάθε παραγγελία, αρχείο και χρηματική κίνηση είναι δεμένη με τον λογαριασμό σας, ό,τι κι αν στείλετε. Το key φαίνεται μία φορά κατά τη δημιουργία — αν χαθεί, ανακαλέστε το από το portal και φτιάξτε άλλο.
Authorization: Bearer vapi_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Όλα τα endpoints ζουν κάτω από https://mystage.film/api/v1. Οι απαντήσεις είναι JSON. Κάθε response έχει x-request-id header — αναφέρετέ το σε ερώτημα υποστήριξης.
https://mystage.film/api/v1
Τα list endpoints επιστρέφουν { data, has_more, next_cursor }. Περάστε next_cursor ως query παράμετρο cursor στην επόμενη κλήση. limit: 1–100 (προεπιλογή 20). Η σειρά είναι πάντα νεότερο πρώτα.
Κάθε POST που δημιουργεί κάτι (orders, uploads, change requests, approvals, cancel) ΑΠΑΙΤΕΙ το header Idempotency-Key με μοναδική τιμή ανά λειτουργία (π.χ. ένα UUID ανά διαδικασία). Ίδιο key + ίδιο σώμα = ίδια απάντηση χωρίς δεύτερη εκτέλεση· ίδιο key + διαφορετικό σώμα = 422 idempotency_mismatch· key που τρέχει ήδη = 409 idempotency_in_flight. Οι απαντήσεις κρατούνται 48 ώρες. Έτσι ένα network retry δεν δημιουργεί ποτέ διπλή παραγγελία ή διπλή χρέωση.
Idempotency-Key: 8f3c1d2a-77b9-4c1e-9a01-5f6e8d9c0b1a
Όλα τα σφάλματα ακολουθούν RFC 9457 (application/problem+json) με πεδία type, title, status, code, request_id και προαιρετικά errors για προβλήματα πεδίων. Οι κωδικοί που θα συναντήσετε:
Μέχρι 120 κλήσεις το λεπτό ανά key (ανάγνωση και γραφή συνολικά) και μέχρι 30 POST/PATCH/DELETE το λεπτό ανά key. Στο 429 η απάντηση έχει Retry-After. Δεν χρεώνεστε για απορριφθέντες κλήσεις.
Όλες οι κλήσεις είναι σχετικές με το base URL. Τα πεδία του σώματος είναι ακριβή (strict): άγνωστα πεδία απορρίπτονται.
/pingΈλεγχος ότι το key είναι έγκυρο. Χωρίς πεδία.
/meΤο key σας, ο λογαριασμός σας, το υπόλοιπο του πορτοφολιού σας και σύνοψη χρήσης 30 ημερών (κλήσεις, παραγγελίες, χρεώσεις σε cents).
curl -H "Authorization: Bearer $KEY" https://mystage.film/api/v1/me
/usageΤο ιστορικό κλήσεων του key σας: route, method, status, order_id αν η κλήση δημιούργησε παραγγελία και credits_cents όσα χρεώθηκαν. Cursor pagination.
curl -H "Authorization: Bearer $KEY" "https://mystage.film/api/v1/usage?limit=50"
/productsΟ κατάλογος με τιμές ανά διάρκεια, aspect ratios, add-ons και το πεδίο intake_schema_id. Cursor pagination.
curl -H "Authorization: Bearer $KEY" https://mystage.film/api/v1/products
/products/{productId}Ένα προϊόν με όλες τις λεπτομέρειές του.
/products/{productId}/intake-formΤα πεδία (answers) που ζητά το προϊόν: τύπος, ετικέτα, υποχρεωτικότητα, επιλογές, αν δέχεται upload. Χτίστε τη φόρμα σας από εδώ.
/uploadsIdempotency-Key requiredΖητά presigned URL για ένα αρχείο (intake). Σώμα: purpose="intake", content_type (image/jpeg|png|webp, audio/mpeg|mp4), size_bytes (μέχρι 50 MB, ακριβές). Πάντα PUT στο url με το σωστό Content-Type πριν λήξει (10'). Κρατήστε το upload_id για τις απαντήσεις της παραγγελίας.
curl -X POST -H "Authorization: Bearer $KEY" -H "Idempotency-Key: $IDEM" \
-H "Content-Type: application/json" -d '{"customer_id":"…","purpose":"intake","content_type":"image/jpeg","size_bytes":48123}' \
https://mystage.film/api/v1/uploads/ordersIdempotency-Key requiredΔημιουργεί παραγγελία και χρεώνει το πορτοφόλι σας σε ένα transaction. Σώμα: customer_id, product_id, length_seconds (από τις τιμές), aspect (προαιρετικά, από aspect_ratios), add_ons { subtitles, extra_formats, resolution, duration_seconds } (προαιρετικά, όσα προσφέρει το προϊόν), answers (τα πεδία του intake form· τα αρχεία ως upload_id), uploads (λίστα upload_id). complimentary δεν είναι διαθέσιμο μέσω API. 402 αν δεν φτάνει το υπόλοιπο — τότε δεν δημιουργείται τίποτα.
curl -X POST -H "Authorization: Bearer $KEY" -H "Idempotency-Key: $IDEM" \
-H "Content-Type: application/json" -d '{"customer_id":"…","product_id":"…","length_seconds":30,"answers":{}}' \
https://mystage.film/api/v1/orders/ordersΟι παραγγελίες σας, νεότερες πρώτα. Φίλτρα: status, created_after (ISO), customer_id. Cursor pagination.
curl -H "Authorization: Bearer $KEY" "https://mystage.film/api/v1/orders?status=delivered"
/orders/{orderId}Μια παραγγελία: status (received, awaiting_approval, changes_requested, in_production, delivered, failed, cancelled, awaiting_balance), στοιχεία, add-ons, total_cents.
/orders/{orderId}/cancelIdempotency-Key requiredΑίτημα ακύρωσης για παραγγελία σε κατάσταση paid. Σώμα: reason (προαιρετικό). Η ακύρωση ολοκληρώνεται από την ομάδα μας· αν έχει ξεκινήσει παραγωγή, η χρέωση επιστρέφεται στο πορτοφόλι σας.
/orders/{orderId}/storyboardΤο τρέχον storyboard μιας παραγγελίας: version, status, scenes με εικόνες (presigned URLs που λήγουν σε ~15').
/orders/{orderId}/storyboard/approveIdempotency-Key requiredΕγκρίνει το storyboard και ξεκινά την παραγωγή. Χωρίς σώμα.
/orders/{orderId}/change-requestsIdempotency-Key requiredΖητά αλλαγές σε σκηνές. Σώμα: requests array με scene_index και comment (το ίδιο σχήμα με το site).
/orders/{orderId}/videoΜόνο με delivered: ασφαλές download URL για το τελικό βίντεο (MP4), με λήξη.
Cookies
Χρησιμοποιούμε cookies ανάλυσης για να κατανοήσουμε πώς χρησιμοποιείται ο ιστότοπος. Δεν είναι απαραίτητα για τη λειτουργία του και η επιλογή σας δεν αλλάζει σε τίποτα την υπηρεσία που λαμβάνετε. Διαβάστε την Πολιτική Απορρήτου