API दस्तावेज़ीकरण
ऑडियो और वीडियो ट्रांसक्रिप्शन के लिए REST API। भुगतान करने वाले ग्राहक खाता सेटिंग में बनाई गई API कुंजी से तृतीय-पक्ष एकीकरण प्रमाणित करते हैं।
बेस URL
https://scribe.uustudio.cc
प्रमाणीकरण
तृतीय-पक्ष एकीकरण को Authorization हेडर में भुगतान किए गए खाते की API कुंजी भेजनी होगी।
Authorization हेडर
Authorization: Bearer {token}खाता सेटिंग के API Keys पेज से कुंजियाँ बनाएँ और रद्द करें। ऐप प्रमाणीकरण एंडपॉइंट केवल आधिकारिक क्लाइंट के लिए हैं।
त्रुटि प्रतिक्रियाएँ
सभी त्रुटियां इस फ़ील्ड वाला JSON बॉडी लौटाती हैं message .
मानक त्रुटि
{
"message": "Description of the error"
}सत्यापन त्रुटि (422)
{
"message": "The name field is required.",
"errors": {
"name": ["The name field is required."]
}
}| स्थिति | विवरण |
|---|---|
| 401 | प्रमाणित नहीं (टोकन गायब या अमान्य) |
| 403 | प्रतिबंधित या योजना सीमा पार |
| 404 | संसाधन नहीं मिला |
| 422 | सत्यापन विफल |
| 429 | दर सीमित या बहुत अधिक समवर्ती टास्क |
| 500 | आंतरिक सर्वर त्रुटि |
दर सीमाएँ
प्रमाणित API एंडपॉइंट प्रति टोकन प्रति मिनट 10 अनुरोधों तक सीमित हैं।
उपयोग सीमाएँ
API उपलब्धता
मुफ़्त योजना में तृतीय-पक्ष REST API उपलब्ध नहीं है। API कुंजियाँ बनाने और उपयोग करने के लिए Pro या Max में अपग्रेड करें, या उपयोग के अनुसार भुगतान वाला पैकेज खरीदें।
- अधिकतम फ़ाइल आकार
- 2 GB
- समवर्ती टास्क
- अधिकतम 3
- प्रति टास्क अधिकतम पुनः प्रयास
- 3
भुगतान योजनाओं की तुलना
| फ़ीचर | Pay as you go | Pro | Max |
|---|---|---|---|
| दैनिक अपलोड | असीमित | असीमित | असीमित |
| निर्यात फ़ॉर्मेट | सभी | सभी | सभी |
| टास्क प्राथमिकता | मध्यम | मध्यम | उच्च |
वर्कफ़्लो
ऑडियो/वीडियो फ़ाइल अपलोड करें
POST /api/uploads/sign→ upload_id और पार्ट जानकारी प्राप्त करेंPUT {presigned_url}→ प्रत्येक पार्ट को स्टोरेज में अपलोड करेंPOST /api/uploads/complete→ अपलोड पूरा करें, ऑटो-क्रिएट टास्कGET /api/tasks/{id}→ स्थिति पूछें (pending -> scribing -> finished)GET /api/tasks/{id}/download/srt→ निर्यात करें (वैकल्पिक)
मैन्युअल रूप से टास्क बनाएँ
POST /api/tasks→ disk, path, name के साथ बनाएँGET /api/tasks/{id}→ स्थिति पूछेंGET /api/tasks/{id}→ segments, summary, mindmap प्राप्त करें
Auth
/api/loginईमेल और पासवर्ड से प्रमाणित करें। Sanctum टोकन लौटाता है।
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| string | Yes | उपयोगकर्ता ईमेल (अधिकतम 255) | |
| password | string | Yes | उपयोगकर्ता पासवर्ड |
प्रतिक्रिया 200
{
"token": "1|abc123...",
"user": {
"id": 1,
"name": "Zhang San",
"email": "[email protected]"
}
}प्रति ईमेल प्रति मिनट 5 प्रयासों तक सीमित।
/api/registerनया खाता बनाएँ। Sanctum टोकन लौटाता है।
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| name | string | Yes | प्रदर्शन नाम (अधिकतम 255) |
| string | Yes | अद्वितीय ईमेल (अधिकतम 255) | |
| password | string | Yes | पुष्टि आवश्यक |
| password_confirmation | string | Yes | पासवर्ड पुष्टि |
प्रतिक्रिया 201
{
"token": "1|abc123...",
"user": {
"id": 1,
"name": "Zhang San",
"email": "[email protected]"
}
}/api/logoutवर्तमान एक्सेस टोकन रद्द करें।
प्रतिक्रिया 204
कोई बॉडी नहीं लौटाता।
टास्क
/api/tasksट्रांसक्रिप्शन टास्क बनाएँ। प्रति उपयोगकर्ता अधिकतम 3 समवर्ती टास्क।
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| disk | string | Yes | r2 / remote / youtube स्टोरेज स्रोत पहचानकर्ता |
| name | string | Yes | टास्क नाम (अधिकतम 255) |
| path | string | Yes | फ़ाइल पथ या स्रोत URL |
| file | string | No | मूल फ़ाइल नाम (अधिकतम 255) |
| size | integer | No | फ़ाइल आकार (बाइट में) |
| duration | integer | No | अवधि (सेकंड में) |
| cost | integer | No | लागत (सेकंड में) |
| segments | array | No | ट्रांसक्रिप्शन सेगमेंट |
| speaker_diarization | boolean | नहीं | app.tasks.speaker_diarization_api_description |
प्रतिक्रिया 201
{
"id": 1,
"name": "Meeting Recording",
"status": "pending",
"speaker_diarization": true,
"created_at": "2026-03-02T10:30:00+08:00"
}त्रुटियाँ
| स्थिति | विवरण |
|---|---|
| 403 | मुफ़्त उपयोगकर्ता API के माध्यम से YouTube लिंक सबमिट नहीं कर सकते। |
| 429 | अधिकतम 3 समवर्ती टास्क की सीमा पहुँची |
/api/tasks/{id}ट्रांसक्रिप्शन परिणाम सहित पूर्ण टास्क विवरण प्राप्त करें।
प्रतिक्रिया
{
"id": 1,
"name": "Meeting Recording",
"file": "meeting.mp3",
"path": "2026-03-02/01HQX...mp3",
"disk": "r2",
"size": 50545869,
"duration": 1965,
"cost": 33,
"status": "finished",
"attempts": 1,
"quality": 3,
"created_at": "2026-03-02T10:30:00+08:00",
"updated_at": "2026-03-02T10:45:00+08:00",
"summary": "The meeting discussed three topics...",
"mindmap": "# Topic\n## Sub-topic 1",
"folder": "Work",
"tags": ["Work"],
"url": "https://youtube.com/watch?v=...",
"segments": [
{
"id": 1,
"start": 0,
"end": 5000,
"speaker": "Speaker 1",
"tokens": ["Okay", "so let's", "begin"],
"text": "Okay, so let's begin..."
}
],
"export": {
"allowed_formats": ["txt", "srt", "vtt", "csv", "pdf", "docx"],
"heavy_formats": ["pdf", "docx"],
"version": "20260302104500"
}
}प्रतिक्रिया फ़ील्ड
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| disk | string|null | स्टोरेज डिस्क: r2 / remote / youtube |
| size | int|null | फ़ाइल आकार (बाइट में) |
| cost | int|null | लागत (सेकंड में) |
| attempts | int | पुनः प्रयास गणना |
| quality | int|null | गुणवत्ता स्कोर (0-5) |
| summary | string|null | AI-जेनरेटेड सारांश |
| mindmap | string|null | AI-जेनरेटेड माइंड मैप |
| folder | string|null | पहला टैग नाम (फ़ोल्डर) |
| tags | array | सभी टैग नाम |
| url | string|null | स्रोत URL (YouTube टास्क के लिए) |
| segments | array|null | ट्रांसक्रिप्शन सेगमेंट |
| segments[].start | int | प्रारंभ समय (ms) |
| segments[].end | int | अंत समय (ms) |
| segments[].text | string | सेगमेंट टेक्स्ट |
| segments[].speaker | string|null | स्पीकर पहचानकर्ता |
| segments[].tokens | array|null | शब्द टोकन एरे |
| export | object | निर्यात मेटाडेटा (allowed_formats, heavy_formats, version) |
/api/tasksक्वेरी पैरामीटर
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| status | string | all | स्थिति द्वारा फ़िल्टर करें |
| search | string | — | नाम से खोजें |
| folder | string | — | फ़ोल्डर द्वारा फ़िल्टर करें (या Uncategorized) |
| page | int | 1 | पृष्ठ संख्या |
| per_page | int | 25 | प्रति पृष्ठ आइटम (अधिकतम 100) |
प्रतिक्रिया
{
"data": [
{
"id": 1,
"name": "Meeting Recording",
"file": "meeting.mp3",
"disk": "r2",
"size": 50545869,
"duration": 1965,
"cost": 33,
"status": "finished",
"attempts": 1,
"quality": 3,
"folder": "Work",
"created_at": "2026-03-02T10:30:00+08:00"
}
],
"current_page": 1,
"last_page": 1,
"per_page": 25,
"total": 1
}/api/tasks/{id}/retryविफल टास्क पुनः प्रयास करें। स्थिति सेट करता है pending (R2) या waiting (remote/YouTube)। अधिकतम 3 पुनः प्रयास।
प्रतिक्रिया 200
{
"id": 1,
"status": "pending",
"attempts": 2
}/api/tasks/{id}/download/{format}ट्रांसक्रिप्ट निर्यात करें। हल्के फ़ॉर्मेट सीधे फ़ाइल लौटाते हैं। भारी फ़ॉर्मेट (pdf/docx) प्रोसेसिंग के दौरान 202 लौटा सकते हैं।
पथ पैरामीटर
| पैरामीटर | विवरण |
|---|---|
| format | txt / srt / vtt / csv / pdf / docx |
प्रतिक्रियाएँ
200 - फ़ाइल तैयार (हल्के फ़ॉर्मेट)
बाइनरी फ़ाइल लौटाता है।
200 - फ़ाइल तैयार (भारी फ़ॉर्मेट, JSON अनुरोध)
{
"status": "ready",
"url": "https://scribe.uustudio.cc/api/tasks/1/download/pdf"
}202 - भारी फ़ॉर्मेट प्रोसेस हो रहा है
{
"status": "processing",
"message": "Your export is being generated. Please try again shortly."
}/api/tasks/{id}/audioमूल ऑडियो या वीडियो फ़ाइल को सीधे स्टोरेज से स्ट्रीम करें (केवल R2)।
प्रतिक्रिया
200 - ऑडियो या वीडियो फ़ाइल का बाइनरी स्ट्रीम। यदि फ़ाइल गायब है या R2 डिस्क पर नहीं है तो 404 लौटाता है।
/api/tasks/{id}/refresh-summaryनवीनतम AI-जेनरेटेड सारांश और माइंड मैप रीफ़्रेश करें और लौटाएँ।
प्रतिक्रिया
{
"summary": "The meeting discussed three topics...",
"mindmap": "# Topic\n## Sub-topic 1"
}/api/tasks/{id}टास्क फ़ील्ड अपडेट करें। सभी फ़ील्ड वैकल्पिक हैं।
अनुरोध बॉडी
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| name | string | नया नाम (अधिकतम 255) |
| folder | string|null | फ़ोल्डर नाम (null टास्क को फ़ोल्डर से हटाता है) |
| duration | integer | अवधि (सेकंड में) |
| cost | integer | लागत (सेकंड में) |
| segments | array | बदलने के लिए पूर्ण सेगमेंट एरे |
| text | string | पूर्ण ट्रांसक्रिप्ट टेक्स्ट |
| quality | integer | गुणवत्ता स्कोर (0-5) |
| index | integer | टास्क क्रम सूचकांक |
प्रतिक्रिया 200
पूर्ण टास्क ऑब्जेक्ट लौटाता है (टास्क विवरण के समान)।
/api/tasks/{id}Response 200
{
"message": "Task deleted successfully"
}/api/tasks/bulkएक साथ कई टास्क हटाएँ। केवल प्रमाणित उपयोगकर्ता के टास्क हटाए जाएंगे। अन्य उपयोगकर्ता की ID को अनदेखा किया जाता है।
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| ids | array | Yes | हटाने के लिए टास्क ID एरे (न्यूनतम 1) |
प्रतिक्रिया 200
{
"message": "2 task(s) deleted successfully",
"deleted_count": 2
}/api/tasks/bulk/moveएक साथ कई टास्क किसी फ़ोल्डर में ले जाएँ। केवल प्रमाणित उपयोगकर्ता के टास्क ले जाए जाएंगे।
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| ids | array | Yes | ले जाने के लिए टास्क ID एरे (न्यूनतम 1) |
| folder | string | Yes | लक्ष्य फ़ोल्डर नाम (अधिकतम 255) |
प्रतिक्रिया 200
{
"message": "2 task(s) moved to Work",
"moved_count": 2
}अपलोड
मल्टीपार्ट अपलोड/api/uploads/signअनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| file | string | Yes | फ़ाइल नाम (समर्थित फ़ॉर्मेट का उपयोग करें) |
| content_type | string | Yes | MIME प्रकार (फ़ाइल एक्सटेंशन से मेल खाना चाहिए) |
| size | integer | Yes | फ़ाइल आकार बाइट में (अधिकतम 2,147,483,648 / 2 GB) |
| duration | integer | No | ऑडियो अवधि सेकंड में |
प्रतिक्रिया
{
"path": "2026-03-02/01HQX...mp3",
"upload_id": "abc123",
"part_size": 5242880,
"part_count": 10,
"expires_at": "2026-03-02T10:40:00+08:00"
}/api/uploads/sign-partअनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| path | string | Yes | अपलोड पथ (अधिकतम 2048) |
| upload_id | string | Yes | अपलोड ID (अधिकतम 2048) |
| part_number | integer | Yes | पार्ट नंबर (1-10000) |
प्रतिक्रिया
{
"url": "https://storage.example.com/...?X-Amz-...",
"headers": {
"Content-Type": "audio/mpeg"
}
}उपयोग करें PUT पार्ट अपलोड करने के लिए लौटाए गए URL और हेडर के साथ।
/api/uploads/completeमल्टीपार्ट अपलोड पूरा करें। यह अपने आप ट्रांसक्रिप्शन टास्क बनाता है और API उपलब्ध न होने या योजना सीमा पार होने पर 403 लौटाता है।
अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| path | string | Yes | अपलोड पथ (अधिकतम 2048) |
| upload_id | string | Yes | अपलोड ID (अधिकतम 2048) |
| original_name | string | Yes | मूल फ़ाइल नाम (समर्थित फ़ॉर्मेट का उपयोग करें) |
| content_type | string | Yes | MIME प्रकार (फ़ाइल एक्सटेंशन से मेल खाना चाहिए) |
| size | integer | Yes | फ़ाइल आकार बाइट में (अधिकतम 2 GB) |
| name | string | No | टास्क नाम (डिफ़ॉल्ट फ़ाइल नाम बिना एक्सटेंशन) |
| duration | integer | No | अवधि सेकंड में (न्यूनतम 1) |
| speaker_diarization | boolean | नहीं | app.tasks.speaker_diarization_api_description |
प्रतिक्रिया 201
{
"message": "File uploaded to the upload server successfully.",
"task": {
"id": 1,
"name": "meeting",
"path": "2026-03-02/01HQX...mp3",
"size": 50545869,
"status": "pending",
"speaker_diarization": true
}
}/api/uploads/abortअनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| path | string | Yes | अपलोड पथ (अधिकतम 2048) |
| upload_id | string | Yes | अपलोड ID (अधिकतम 2048) |
प्रतिक्रिया
{
"message": "Multipart upload cancelled successfully."
}फ़ोल्डर
टैग-आधारित/api/foldersटास्क गणना के साथ सभी फ़ोल्डर सूचीबद्ध करें।
प्रतिक्रिया
{
"folders": [
{"id": 1, "name": "Work", "count": 5},
{"id": 2, "name": "Personal", "count": 3}
],
"uncategorized_count": 2,
"total_count": 10
}/api/foldersअनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| name | string | Yes | फ़ोल्डर नाम (प्रति उपयोगकर्ता अधिकतम 14 अक्षर / 7 चीनी अक्षर, अद्वितीय) |
प्रतिक्रिया 201
{
"id": 1,
"name": "Work"
}/api/folders/{name}अनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| name | string | Yes | नया फ़ोल्डर नाम (बनाने के समान बाधाएँ) |
प्रतिक्रिया 200
{
"id": 1,
"name": "New Name"
}/api/folders/{name}Response 200
{
"message": "Folder deleted successfully"
}उपयोगकर्ता
/api/userप्रतिक्रिया
{
"id": 1,
"name": "Zhang San",
"email": "[email protected]",
"avatar": "https://...",
"balance": {
"used_seconds": 9000,
"remaining_seconds": 36000,
"allowance_remaining_seconds": 30000,
"top_up_remaining_seconds": 6000,
"total_seconds": 45000,
"usage_percent": 20
},
"subscription": {
"plan": "year",
"plan_key": "max_yearly",
"tier": "max",
"billing_interval": "yearly",
"active": true,
"access_tier": "max"
},
"queue": {
"pending_count": 1,
"running_count": 1,
"failed_count": 0
}
}बैलेंस फ़ील्ड
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| used_seconds | int | पिछले मासिक अनुदान के बाद से उपयोग किए गए सेकंड |
| remaining_seconds | int | शेष सेकंड |
| total_seconds | int | कुल सेकंड |
| usage_percent | int | उपयोग प्रतिशत (0-100) |
/api/userअनुरोध बॉडी
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| name | string | No | प्रदर्शन नाम (अधिकतम 255) |
| string | नहीं | नया ईमेल (अद्वितीय होना चाहिए) | |
| avatar | file | No | छवि फ़ाइल (अधिकतम 5 MB) |
प्रतिक्रिया 200
{
"id": 1,
"name": "New Name",
"email": "[email protected]",
"avatar": "https://..."
}सूचनाएँ
/api/notificationsनवीनतम 10 सूचनाएँ प्राप्त करें।
प्रतिक्रिया
[
{
"id": "abc123",
"title": "Task Completed",
"message": "Meeting Recording has been transcribed.",
"read_at": null,
"created_at": "2026-03-02T10:45:00+08:00"
}
]/api/notifications/mark-all-as-readसभी अपठित सूचनाओं को पढ़ा गया चिह्नित करें।
Response 200
{
"success": true
}चेकआउट
/api/checkout/{plan}सदस्यता योजना के लिए Paddle चेकआउट URL प्राप्त करें।
पथ पैरामीटर
| पैरामीटर | विवरण |
|---|---|
| plan | test / month / year |
प्रतिक्रिया
Paddle चेकआउट विकल्प ऑब्जेक्ट लौटाता है। अमान्य योजना के लिए 404 लौटाता है।
/api/healthसार्वजनिक हेल्थ चेक एंडपॉइंट। कोई प्रमाणीकरण आवश्यक नहीं।
प्रतिक्रिया 200
{
"status": "ok"
}
/api/auth/social-loginGoogle OAuth से प्रमाणित करें। यदि खाता नहीं है तो बनाता है।
अनुरोध बॉडी
googleसमर्थित प्रदाताप्रतिक्रिया 200