Sora Video Generation API
Sora AI video generation service with text and image input.
API home page: Ace Data Cloud - Sora Video Generation
Keywords: sora-api, ai-video, video-generation, openai-sora, rest-api, ai-api, aivideo, AI API, REST API, Developer API, Ace Data Cloud
Why Use Sora Video Generation on Ace Data Cloud
Unified developer platform with one API key, billing system, and usage tracking
Production-ready AI API endpoints served from https://api.acedata.cloud
English integration guides, API references, and service documentation
Global-ready workflow for developers building chat, image, video, music, and search products
<style>
.sora-page * { box-sizing: border-box; }
.sora-page h1, .sora-page h2, .sora-page h3, .sora-page h4, .sora-page h5, .sora-page h6, .sora-page p, .sora-page ul, .sora-page ol, .sora-page li, .sora-page pre, .sora-page blockquote, .sora-page table, .sora-page td, .sora-page th { margin: 0; padding: 0; }
.sora-page {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: var(--el-text-color-primary);
background: var(--el-bg-color);
line-height: 1.6;
}
.sora-page a { text-decoration: none; color: inherit; }
.sora-page a:hover { text-decoration: none; }
.sora-page ul { list-style: none; }
.markdown-body .sora-page a { color: inherit !important; text-decoration: none !important; }
.markdown-body .sora-page a:hover { text-decoration: none !important; }
.markdown-body .sora-page a.s-btn-primary,
.markdown-body .sora-page a.price-btn-fill,
.markdown-body .sora-page a.btn-cta-light { color: #ffffff !important; }
.markdown-body .sora-page a.s-btn-secondary { color: var(--el-text-color-primary) !important; }
.markdown-body .sora-page a.price-btn-out { color: var(--el-text-color-primary) !important; }
.markdown-body .sora-page a.btn-cta-ghost { color: #94a3b8 !important; }
.markdown-body .sora-page a.btn-cta-ghost:hover { color: #e2e8f0 !important; }
.markdown-body .sora-page h1, .markdown-body .sora-page h2 { border-bottom: none !important; padding-bottom: 0 !important; }
.s-container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.s-container-narrow { max-width: 800px; margin: 0 auto; padding: 0 24px; }
.s-container-wide { max-width: 1100px; margin: 0 auto; padding: 0 32px; }
.s-section { padding: 80px 0; }
.s-section-lg { padding: 100px 0; }
.s-section-sm { padding: 48px 0; }
.s-bg-white { background: var(--el-bg-color); }
.s-bg-gray { background: var(--el-bg-color-page); }
.s-bg-dark { background: #0f172a; color: #f8fafc; }
.s-header { text-align: center; margin-bottom: 64px; }
.s-header h2 {
font-size: clamp(28px, 4vw, 40px);
font-weight: 700;
color: var(--el-text-color-primary);
letter-spacing: normal;
margin-bottom: 20px;
line-height: 1.15;
}
.s-header p {
font-size: clamp(16px, 2vw, 18px);
color: var(--el-text-color-regular);
max-width: 640px;
margin: 0 auto;
line-height: 1.6;
}
.s-bg-dark .s-header h2 { color: #f8fafc; }
.s-bg-dark .s-header p { color: var(--el-text-color-secondary); }
.sora-page .s-btn-primary {
display: inline-flex; align-items: center; gap: 6px;
padding: 14px 28px;
background: #277186; color: #ffffff !important;
border-radius: 9999px; font-size: 15px; font-weight: 600;
transition: background 0.2s, transform 0.15s;
border: none; cursor: pointer;
text-decoration: none !important;
}
.sora-page .s-btn-primary:hover { background: #1f5a6b; transform: translateY(-1px); text-decoration: none !important; }
.sora-page .s-btn-secondary {
display: inline-flex; align-items: center; gap: 6px;
padding: 14px 28px;
background: var(--el-bg-color); color: var(--el-text-color-primary) !important;
border: 1px solid var(--el-border-color-light);
border-radius: 9999px; font-size: 15px; font-weight: 600;
transition: border-color 0.2s, background 0.2s;
cursor: pointer;
text-decoration: none !important;
}
.sora-page .s-btn-secondary:hover { background: var(--el-bg-color-page); text-decoration: none !important; }
.sora-hero {
padding: 100px 0 80px;
text-align: center;
background: var(--el-bg-color);
position: relative;
overflow: hidden;
}
.sora-hero::before {
content: '';
position: absolute;
top: -200px; left: 50%;
transform: translateX(-50%);
width: 900px; height: 500px;
background: radial-gradient(ellipse, rgba(39, 113, 134, 0.06) 0%, transparent 70%);
pointer-events: none;
}
.hero-badge {
display: inline-flex; align-items: center; gap: 8px;
padding: 6px 16px;
background: var(--el-bg-color-page); border: 1px solid var(--el-border-color-light);
border-radius: 9999px; font-size: 13px; font-weight: 600; color: var(--el-text-color-regular);
margin-bottom: 28px;
}
.hero-badge .badge-dot {
width: 6px; height: 6px; background: #10b981; border-radius: 50%;
display: inline-block;
}
.sora-hero h1 {
font-size: clamp(36px, 5vw, 60px);
font-weight: 700; line-height: 1.05;
letter-spacing: normal; color: var(--el-text-color-primary);
margin-bottom: 20px;
position: relative;
}
.sora-hero h1 span { color: #277186; }
.sora-page .hero-subtitle {
font-size: clamp(16px, 2vw, 20px);
color: var(--el-text-color-regular); line-height: 1.6;
max-width: 620px; margin: 0 auto 56px;
position: relative;
}
.hero-actions {
display: flex; gap: 12px; justify-content: center;
flex-wrap: wrap; margin-bottom: 56px; position: relative;
}
.hero-highlights {
display: flex; align-items: center; justify-content: center;
gap: 16px; flex-wrap: wrap; position: relative;
}
.hero-highlights .h-item { font-size: 14px; color: var(--el-text-color-regular); font-weight: 500; }
.hero-highlights .h-div { width: 1px; height: 16px; background: var(--el-border-color-light); }
@media (max-width: 640px) {
.hero-highlights .h-div { display: none; }
.hero-highlights { gap: 8px 16px; }
.hero-actions { flex-direction: column; align-items: center; }
.hero-actions a { width: 100%; max-width: 280px; justify-content: center; }
}
.sora-stats {
padding: 48px 0;
background: var(--el-bg-color-page);
border-top: 1px solid var(--el-border-color-lighter);
border-bottom: 1px solid var(--el-border-color-lighter);
}
.stats-grid {
display: grid; grid-template-columns: repeat(4, 1fr);
gap: 32px; text-align: center;
}
.stat-icon { font-size: 28px; margin-bottom: 12px; }
.stat-val {
font-size: clamp(28px, 4vw, 40px);
font-weight: 700; color: var(--el-text-color-primary);
letter-spacing: normal; margin-bottom: 4px;
}
.stat-lbl { font-size: 14px; color: var(--el-text-color-secondary); font-weight: 500; }
@media (max-width: 768px) { .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 24px; } } @media (max-width: 480px) { .stats-grid { grid-template-columns: 1fr; gap: 20px; } }
.features-grid {
display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px;
}
.feat-card {
padding: 32px 28px;
border: none; border-radius: 20px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.08);
background: var(--el-bg-color);
transition: border-color 0.2s, box-shadow 0.2s, transform 0.15s;
}
.feat-card:hover { box-shadow: 0 8px 24px 0 rgba(0,0,0,0.12);
transform: translateY(-2px);
}
.feat-icon { font-size: 32px; margin-bottom: 16px; }
.feat-card h3 { font-size: 18px; font-weight: 700; color: var(--el-text-color-primary); margin-bottom: 8px; }
.feat-card p { font-size: 15px; color: var(--el-text-color-regular); line-height: 1.6; }
@media (max-width: 1024px) { .features-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 640px) { .features-grid { grid-template-columns: 1fr; } } .code-split {
display: flex; gap: 48px; align-items: center;
}
.code-left { flex: 1; min-width: 0; }
.code-right { flex: 1; }
.code-wrap {
border-radius: 16px !important; overflow: hidden !important;
border: 1px solid #334155 !important; background: #0f172a !important;
}
.markdown-body .sora-page .code-wrap {
border-radius: 16px !important; overflow: hidden !important;
border: 1px solid #334155 !important; background: #0f172a !important;
}
.code-bar {
display: flex !important; align-items: center !important; justify-content: space-between !important;
padding: 12px 20px !important; background: #1e293b !important;
border-bottom: 1px solid #334155 !important;
}
.code-dots { display: flex; gap: 6px; }
.code-dots i {
width: 10px; height: 10px; border-radius: 50%;
display: inline-block;
}
.code-dots .r { background: #ef4444; }
.code-dots .y { background: #f59e0b; }
.code-dots .g { background: #10b981; }
.code-lang {
font-size: 12px; color: var(--el-text-color-secondary); font-weight: 600;
text-transform: uppercase; letter-spacing: 0.05em;
}
.code-block {
padding: 24px !important; margin: 0 !important; overflow-x: auto !important;
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace !important;
font-size: 13.5px !important; line-height: 1.7 !important; color: #e2e8f0 !important;
white-space: pre !important; background: transparent !important;
border: none !important; border-radius: 0 !important;
}
.markdown-body .sora-page .code-block {
padding: 24px !important; margin: 0 !important; overflow-x: auto !important;
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace !important;
font-size: 13.5px !important; line-height: 1.7 !important; color: #e2e8f0 !important;
white-space: pre !important; background: transparent !important;
border: none !important; border-radius: 0 !important;
}
.code-right h2 {
font-size: clamp(24px, 3vw, 32px);
font-weight: 700; color: var(--el-text-color-primary); margin-bottom: 12px;
letter-spacing: normal;
}
.code-right > p { font-size: 16px; color: var(--el-text-color-regular); line-height: 1.6; margin-bottom: 32px; }
.explain-steps { display: flex; flex-direction: column; gap: 20px; }
.explain-step { display: flex; gap: 16px; align-items: flex-start; }
.step-num {
width: 32px; height: 32px; border-radius: 50%;
background: var(--el-bg-color-page); border: 1px solid var(--el-border-color-light);
display: flex; align-items: center; justify-content: center;
font-size: 14px; font-weight: 700; color: var(--el-text-color-regular);
flex-shrink: 0;
}
.step-text h4 { font-size: 15px; font-weight: 700; color: var(--el-text-color-primary); margin-bottom: 2px; }
.step-text p { font-size: 14px; color: var(--el-text-color-secondary); line-height: 1.5; }
@media (max-width: 768px) {
.code-split { flex-direction: column; }
.code-left { order: 2; }
.code-right { order: 1; }
} .usecases-grid {
display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;
}
.uc-card {
padding: 28px 24px; background: var(--el-bg-color);
border: none; border-radius: 20px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.08);
text-align: center;
transition: border-color 0.2s, box-shadow 0.2s, transform 0.15s;
}
.uc-card:hover { box-shadow: 0 8px 24px 0 rgba(0,0,0,0.12);
transform: translateY(-2px);
}
.uc-icon { font-size: 36px; margin-bottom: 16px; }
.uc-card h3 { font-size: 17px; font-weight: 700; color: var(--el-text-color-primary); margin-bottom: 8px; }
.uc-card p { font-size: 14px; color: var(--el-text-color-regular); line-height: 1.6; }
@media (max-width: 1024px) { .usecases-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .usecases-grid { grid-template-columns: 1fr; } } .steps-row {
display: flex; align-items: flex-start; justify-content: center;
margin-bottom: 48px;
}
.stp-card { flex: 1; max-width: 320px; text-align: center; padding: 0 24px; }
.stp-num {
font-size: clamp(48px, 6vw, 72px);
font-weight: 700; color: #e2e8f0;
letter-spacing: -0.04em; line-height: 1;
margin-bottom: 20px;
}
.stp-card h3 { font-size: 18px; font-weight: 700; color: var(--el-text-color-primary); margin-bottom: 10px; }
.stp-card p { font-size: 15px; color: var(--el-text-color-regular); line-height: 1.6; }
.stp-conn {
width: 60px; height: 2px; background: var(--el-border-color-light);
margin-top: 36px; flex-shrink: 0;
}
.steps-cta { text-align: center; }
@media (max-width: 768px) {
.steps-row { flex-direction: column; align-items: center; gap: 32px; }
.stp-conn { width: 2px; height: 32px; margin: 0; }
.stp-card { max-width: 100%; }
}
.cmp-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.sora-page .cmp-table {
display: table !important;
width: 100%; max-width: 860px; margin: 0 auto;
border-collapse: collapse; font-size: 15px;
}
.sora-page .cmp-table th, .cmp-table td {
padding: 16px 20px; text-align: center;
border-bottom: 1px solid var(--el-border-color-light);
}
.sora-page .cmp-table th {
font-weight: 700; color: var(--el-text-color-regular); font-size: 14px;
text-transform: uppercase; letter-spacing: 0.04em;
background: var(--el-bg-color-page);
}
.sora-page .cmp-table td:first-child, .cmp-table th:first-child {
text-align: left; font-weight: 600; color: var(--el-text-color-primary);
}
.cmp-us { font-weight: 700; }
.cmp-brand { font-weight: 700; color: var(--el-text-color-primary); }
.ck { color: #10b981; font-weight: 700; font-size: 18px; }
.cx { color: #d1d5db; font-weight: 700; font-size: 18px; }
@media (max-width: 640px) {
.cmp-table th, .cmp-table td { padding: 12px 10px; font-size: 13px; }
} .models-grid {
display: grid; grid-template-columns: repeat(2, 1fr);
gap: 24px; max-width: 720px; margin: 0 auto;
}
.mdl-card {
padding: 32px 28px;
border: none; border-radius: 20px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.08);
background: var(--el-bg-color); position: relative;
}
.mdl-card.mdl-rec { border-color: #277186; border-width: 2px; }
.mdl-rec-badge {
position: absolute; top: -12px; left: 50%;
transform: translateX(-50%);
padding: 4px 14px; background: #277186; color: #ffffff;
border-radius: 9999px; font-size: 12px; font-weight: 700;
text-transform: uppercase; letter-spacing: 0.04em;
}
.mdl-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.mdl-head h3 { font-size: 20px; font-weight: 700; color: var(--el-text-color-primary); }
.mdl-tag {
padding: 3px 10px; background: var(--el-bg-color-page); border-radius: 9999px;
font-size: 11px; font-weight: 700; color: var(--el-text-color-regular);
text-transform: uppercase; letter-spacing: 0.04em;
}
.mdl-tag-blue { background: #eff6ff; color: #2563eb; }
.mdl-tag-purple { background: #e9f1f3; color: #277186; }
.sora-page .mdl-desc { font-size: 15px; color: var(--el-text-color-regular); line-height: 1.6; margin-bottom: 20px; }
.mdl-feats { display: flex; flex-direction: column; gap: 8px; }
.mdl-feats li { font-size: 14px; color: var(--el-text-color-regular); line-height: 1.4; }
@media (max-width: 768px) { .models-grid { grid-template-columns: 1fr; } } .price-grid {
display: grid !important; grid-template-columns: repeat(2, 1fr) !important;
gap: 24px !important; max-width: 720px !important; margin: 0 auto !important;
align-items: start;
}
.price-card {
padding: 36px 32px;
border: 1px solid var(--el-border-color-light); border-radius: 20px;
background: var(--el-bg-color); position: relative;
}
.price-card-feat {
border: 2px solid #277186;
box-shadow: 0 8px 32px rgba(0,0,0,0.08);
transform: scale(1.03);
}
.price-feat-badge {
position: absolute; top: -13px; left: 50%;
transform: translateX(-50%);
padding: 5px 18px; background: #277186; color: #ffffff;
border-radius: 9999px; font-size: 12px; font-weight: 700;
text-transform: uppercase; letter-spacing: 0.04em;
white-space: nowrap;
}
.price-tier {
font-size: 16px; font-weight: 700; color: var(--el-text-color-regular);
text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 12px;
}
.price-amt {
font-size: clamp(36px, 5vw, 48px);
font-weight: 700; color: var(--el-text-color-primary); letter-spacing: normal;
}
.price-per { font-size: 16px; color: var(--el-text-color-secondary); font-weight: 500; }
.sora-page .price-desc { font-size: 14px; color: var(--el-text-color-secondary); margin-bottom: 24px; margin-top: 8px; }
.sora-page .price-feats { display: flex; flex-direction: column; gap: 10px; margin-bottom: 36px; }
.sora-page .price-feats li { font-size: 14px; color: var(--el-text-color-regular); line-height: 1.4; display: flex; align-items: center; gap: 8px; }
.price-ck { color: #10b981; font-weight: 700; font-size: 14px; flex-shrink: 0; }
.price-btn {
display: block; text-align: center; padding: 14px 0;
border-radius: 9999px; font-size: 15px; font-weight: 600;
transition: background 0.2s, border-color 0.2s, transform 0.15s;
width: 100%; cursor: pointer;
}
.sora-page .price-btn-fill { background: #277186; color: #ffffff !important; border: none; text-decoration: none !important; }
.sora-page .price-btn-fill:hover { background: #1f5a6b; transform: translateY(-1px); text-decoration: none !important; }
.sora-page .price-btn-out { background: var(--el-bg-color); color: var(--el-text-color-primary) !important; border: 1px solid var(--el-border-color-light); text-decoration: none !important; }
.sora-page .price-btn-out:hover { background: var(--el-bg-color-page); text-decoration: none !important; }
@media (max-width: 768px) {
.price-grid { grid-template-columns: 1fr !important; }
.price-card-feat { transform: none; }
} .faq-list { display: flex; flex-direction: column; }
.faq-item { border-bottom: 1px solid var(--el-border-color-light); }
.faq-item:first-child { border-top: 1px solid #e5e7eb; }
.faq-q {
display: flex; justify-content: space-between; align-items: center;
padding: 20px 0; cursor: pointer;
font-size: 16px; font-weight: 600; color: var(--el-text-color-primary);
list-style: none; user-select: none;
transition: color 0.2s;
}
.faq-q::-webkit-details-marker { display: none; }
.faq-q:hover { color: var(--el-text-color-primary); }
.faq-chev { font-size: 18px; color: var(--el-text-color-secondary); transition: transform 0.2s; flex-shrink: 0; }
.faq-item[open] .faq-chev { transform: rotate(180deg); }
.faq-a { padding: 0 0 20px; }
.faq-a p { font-size: 15px; color: var(--el-text-color-regular); line-height: 1.7; }
.rel-grid {
display: grid; grid-template-columns: repeat(2, 1fr);
gap: 16px; max-width: 800px; margin: 0 auto;
}
.rel-card
{
display: flex; align-items: center; gap: 16px;
padding: 20px 24px; background: var(--el-bg-color);
border: none; border-radius: 20px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.08);
transition: border-color 0.2s, box-shadow 0.2s;
}
.rel-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.05); }
.rel-icon { font-size: 28px; flex-shrink: 0; }
.rel-info { flex: 1; min-width: 0; }
.rel-info h3 { font-size: 15px; font-weight: 700; color: var(--el-text-color-primary); margin-bottom: 2px; }
.rel-info p { font-size: 13px; color: var(--el-text-color-secondary); line-height: 1.4; }
.rel-arrow {
font-size: 18px; color: #cbd5e1; flex-shrink: 0;
transition: color 0.2s, transform 0.2s;
}
.rel-card:hover .rel-arrow { color: var(--el-text-color-regular); transform: translateX(3px); }
@media (max-width: 640px) { .rel-grid { grid-template-columns: 1fr; } } .sora-cta {
padding: 100px 0; background: #0f172a;
text-align: center; position: relative; overflow: hidden;
}
.sora-cta::before {
content: '';
position: absolute; top: -100px; left: 50%;
transform: translateX(-50%);
width: 700px; height: 400px;
background: radial-gradient(ellipse, rgba(39, 113, 134, 0.12) 0%, transparent 70%);
pointer-events: none;
}
.sora-cta h2 {
font-size: clamp(28px, 4vw, 44px);
font-weight: 700; color: #f8fafc;
letter-spacing: normal; margin-bottom: 28px;
position: relative;
}
.sora-cta > div > p {
font-size: clamp(16px, 2vw, 18px);
color: var(--el-text-color-secondary); max-width: 520px;
margin: 0 auto 56px; line-height: 1.6;
position: relative;
}
.cta-actions {
display: flex; gap: 12px; justify-content: center;
flex-wrap: wrap; position: relative;
}
.sora-page .btn-cta-light {
display: inline-flex; align-items: center; gap: 6px;
padding: 14px 32px; background: #277186; color: #ffffff !important;
border-radius: 9999px; font-size: 15px; font-weight: 700;
transition: background 0.2s, transform 0.15s;
text-decoration: none !important;
}
.sora-page .btn-cta-light:hover { background: #1f5a6b; transform: translateY(-1px); text-decoration: none !important; }
.sora-page .btn-cta-ghost {
display: inline-flex; align-items: center;
padding: 14px 32px; background: transparent; color: #94a3b8 !important;
border: 1px solid #334155; border-radius: 9999px;
font-size: 15px; font-weight: 600;
transition: border-color 0.2s, color 0.2s;
text-decoration: none !important;
}
.sora-page .btn-cta-ghost:hover { border-color: var(--el-text-color-regular); color: #e2e8f0 !important; text-decoration: none !important; }
.sora-page code
```css
{
background: #dbeafe !important;
padding: 2px 8px !important;
border-radius: 5px !important;
font-size: 13px !important;
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace !important;
color: #1e40af !important;
border: 1px solid #bfdbfe !important;
}
.s-text-dark { color: var(--el-text-color-primary); }
.s-text-brand { color: #277186; }
.s-section-body { font-size: 16px; color: var(--el-text-color-regular); line-height: 1.8; text-align: center; max-width: 680px; margin: 0 auto; }
.s-section-body p + p { margin-top: 16px; }
.s-text-muted { color: var(--el-text-color-secondary); }
html.dark .sora-page { background: var(--el-bg-color); color: var(--el-text-color-primary); }
html.dark .sora-page a { color: inherit; }
html.dark .markdown-body .sora-page a { color: inherit !important; }
html.dark .markdown-body .sora-page a.s-btn-primary,
html.dark .markdown-body .sora-page a.price-btn-fill,
html.dark .markdown-body .sora-page a.btn-cta-light { color: #ffffff !important; }
html.dark .markdown-body .sora-page a.s-btn-secondary { color: var(--el-text-color-primary) !important; }
html.dark .markdown-body .sora-page a.price-btn-out { color: var(--el-text-color-primary) !important; }
html.dark .markdown-body .sora-page a.btn-cta-ghost { color: #94a3b8 !important; }
html.dark .markdown-body .sora-page a.btn-cta-ghost:hover { color: var(--el-text-color-primary) !important; }
html.dark .s-bg-white { background: var(--el-bg-color); }
html.dark .s-bg-gray { background: var(--el-bg-color-page); }
html.dark .s-bg-dark { background: var(--el-bg-color); }
html.dark .s-header h2 { color: var(--el-text-color-primary); }
html.dark .s-header p { color: var(--el-text-color-secondary); }
html.dark .sora-page .s-btn-primary { background: #277186; color: #ffffff !important; }
html.dark .sora-page .s-btn-primary:hover { background: #1f5a6b; }
html.dark .sora-page .s-btn-secondary {
background: #1e293b; color: var(--el-text-color-primary) !important;
border-color: #475569;
}
html.dark .sora-page .s-btn-secondary:hover { background: var(--el-border-color); border-color: var(--el-text-color-regular); }
html.dark .sora-hero { background: var(--el-bg-color); }
html.dark .sora-hero::before {
background: radial-gradient(ellipse, rgba(39, 113, 134, 0.15) 0%, transparent 70%);
}
html.dark .hero-badge { background: var(--el-bg-color-page); border-color: var(--el-border-color); color: var(--el-text-color-secondary); }
html.dark .sora-hero h1 { color: var(--el-text-color-primary); }
html.dark .sora-hero h1 span { color: #3b9ab5; }
html.dark .sora-page .hero-subtitle { color: var(--el-text-color-secondary); }
html.dark .hero-highlights .h-item { color: var(--el-text-color-secondary); }
html.dark .hero-highlights .h-div { background: var(--el-border-color); }
html.dark .sora-stats { background: var(--el-bg-color-page); border-color: var(--el-border-color); }
html.dark .stat-val { color: var(--el-text-color-primary); }
html.dark .stat-lbl { color: var(--el-text-color-regular); }
html.dark .feat-card {
background: var(--el-bg-color-page); border-color: var(--el-border-color);
}
html.dark .feat-card:hover { border-color: var(--el-text-color-regular); box-shadow: 0 4px 16px rgba(0,0,0,0.3); }
html.dark .feat-card h3 { color: var(--el-text-color-primary); }
html.dark .feat-card p { color: var(--el-text-color-secondary); }
html.dark .code-right h2 { color: var(--el-text-color-primary); }
html.dark .code-right > p { color: var(--el-text-color-secondary); }
html.dark .step-num { background: var(--el-border-color); border-color: var(--el-text-color-regular); color: var(--el-text-color-secondary); }
html.dark .step-text h4 { color: var(--el-text-color-primary); }
html.dark .step-text p { color: var(--el-text-color-regular); }
html.dark .sora-page code {
background: #1e3a5f !important; color: #93c5fd !important; border-color: #2563eb !important;
}
html.dark .s-text-dark { color: var(--el-text-color-primary); }
html.dark .s-text-brand { color: #3b9ab5; }
html.dark .s-section-body { color: var(--el-text-color-secondary); }
html.dark .uc-card { background: var(--el-bg-color-page); border-color: var(--el-border-color); }
html.dark .uc-card:hover { border-color: var(--el-text-color-regular); box-shadow: 0 4px 16px rgba(0,0,0,0.3); }
html.dark .uc-card h3 { color: var(--el-text-color-primary); }
html.dark .uc-card p { color: var(--el-text-color-secondary); }
html.dark .stp-num { color: #334155; }
html.dark .stp-card h3 { color: var(--el-text-color-primary); }
html.dark .stp-card p { color: var(--el-text-color-secondary); }
html.dark .stp-conn { background: var(--el-border-color); }
html.dark .cmp-table th { background: var(--el-bg-color-page); color: var(--el-text-color-secondary); }
html.dark .cmp-table td { border-color: var(--el-border-color); }
html.dark .cmp-table th { border-color: var(--el-border-color); }
html.dark .cmp-table td:first-child { color: var(--el-text-color-primary); }
html.dark .cmp-brand { color: var(--el-text-color-primary); }
html.dark .cx { color: var(--el-text-color-regular); }
html.dark .mdl-card { background: var(--el-bg-color-page); border-color: var(--el-border-color); }
html.dark .mdl-card.mdl-rec { border-color: #277186; }
html.dark .mdl-head h3 { color: var(--el-text-color-primary); }
html.dark .mdl-tag { background: var(--el-border-color); color: var(--el-text-color-secondary); }
html.dark .mdl-tag-blue { background: #1e3a5f; color: #60a5fa; }
html.dark .mdl-tag-purple { background: rgba(39, 113, 134, 0.2); color: #3b9ab5; }
html.dark .mdl-desc { color: var(--el-text-color-secondary); }
html.dark .mdl-feats li { color: var(--el-text-color-secondary); }
html.dark .price-card { background: var(--el-bg-color-page); border-color: var(--el-border-color); }
html.dark .price-card-feat { border-color: #277186; box-shadow: 0 8px 32px rgba(0,0,0,0.3); }
html.dark .price-tier { color: var(--el-text-color-secondary); }
html.dark .price-amt { color: var(--el-text-color-primary); }
html.dark .price-desc { color: var(--el-text-color-regular); }
html.dark .price-feats li { color: var(--el-text-color-secondary); }
html.dark .sora-page .price-btn-out {
background: #1e293b; color: var(--el-text-color-primary) !important; border-color: #334155;
}
html.dark .sora-page .price-btn-out:hover { background: var(--el-border-color); border-color: var(--el-text-color-regular); }
html.dark .faq-item { border-color: var(--el-border-color); }
html.dark .faq-q { color: var(--el-text-color-primary); }
html.dark .faq-q:hover { color: #ffffff; }
html.dark .faq-chev { color: var(--el-text-color-regular); }
html.dark .faq-a p { color: var(--el-text-color-secondary); }
html.dark .rel-card { background: var(--el-bg-color-page); border-color: var(--el-border-color); }
html.dark .rel-card:hover { border-color: var(--el-text-color-regular); box-shadow: 0 4px 12px rgba(0,0,0,0.3); }
html.dark .rel-info h3 { color: var(--el-text-color-primary); }
html.dark .rel-info p { color: var(--el-text-color-regular); }
html.dark .rel-arrow { color: var(--el-text-color-regular); }
html.dark .rel-card:hover .rel-arrow { color: var(--el-text-color-secondary); }
html.dark .sora-cta { background: #020617; }
html.dark .sora-cta::before {
background: radial-gradient(ellipse, rgba(39, 113, 134, 0.2) 0%, transparent 70%);
}
html.dark .sora-page .btn-cta-light { color: #ffffff !important; }
html.dark .sora-page .btn-cta-ghost { color: #94a3b8 !important; }
html.dark .sora-page .btn-cta-ghost:hover { color: var(--el-text-color-primary) !important; }
html.dark .sora-page .price-btn-fill { color: #ffffff !important; }
</style>
Sora API · Ace Data Cloud
Sora API:
Generate AI Videos
Integrate OpenAI Sora video generation capabilities into your application through a stable and comprehensive REST API. Text-to-video, image-to-video, character-driven video—all accomplished through a unified interface.
```
🎬 2 Model Versions
🖼️ Image to Video
📄 OpenAPI 3.0 Specification
🔑 Bearer Token Authentication
⏱️
25s
Longest Video Duration
Does Sora have an official API?
OpenAI's Sora video generation model is currently only available through ChatGPT Plus/Pro subscriptions and limited enterprise partnerships, and a standalone public REST API has not yet been opened.
Ace Data Cloud fills this gap by providing a stable, production-ready API that allows you to programmatically access Sora's video generation capabilities in full—including the latest sora-2 and sora-2-pro models—through a simple REST interface, equipped with OpenAPI specifications, Webhook support, streaming, and pay-as-you-go pricing.
A comprehensive API suite covering the complete workflow of Sora video generation
🎬
Generate high-quality AI videos from text prompts. Describe the scenes, characters, and actions you want, and Sora will create realistic video content.
🖼️
Upload reference images and let Sora convert static images into dynamic videos. Use the image_urls parameter to pass in image links.
🎭
Upload character reference videos using character_url to maintain consistent character appearance and action style in the generated video.
📐
Supports three orientations: landscape, portrait, and square, as well as two resolution options: small and large.
⏱️
Supports video durations of 10 seconds, 15 seconds, and 25 seconds. 25 seconds is limited to the sora-2-pro model—satisfying various needs from short to long videos.
⚡
Supports NDJSON real-time streaming to get generation progress updates, or set a callback_url to asynchronously receive results. No polling required.
curl -X POST https://api.acedata.cloud/sora/videos \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A cat running through a sunlit meadow",
"model": "sora-2",
"duration": 10,
"orientation": "landscape",
"size": "large",
"callback_url": "https://your-app.com/webhook"
}'
{
"success": true,
"task_id": "c7e3a1...",
"data":
{
"id": "f9d2b4...",
"video_url": "https://cdn.acedata.cloud/f9d2b4.mp4",
"state": "succeeded",
"prompt": "A cat running through a sunlit meadow",
"model": "sora-2",
"duration": 10
}
}
Quick Start - Get Started in 5 Minutes
A concise REST API that uses Bearer Token authentication. One request is enough to generate your first AI video.
1
Register on Ace Data Cloud and obtain your Bearer Token from the console
2
Send a request to /sora/videos with your prompt and model preferences
3
Obtain the video URL - which can be downloaded, embedded, or shared directly
What Can You Build with the Sora API?
From content creation to enterprise applications - developers are building these projects
🎬
Build AI video generation applications that allow users to quickly create short video content through text descriptions
📱
Provide AI video generation features for social media creators to quickly produce eye-catching short videos
🤖
Integrate with Claude, ChatGPT, or any AI Agent through our MCP Server for natural language video creation
🏢
Generate product demo videos, advertising materials, and brand promotional content in bulk
3 Steps to Get Started Quickly
From registration to generating your first AI video, it takes less than 5 minutes
01
Create a free account on Ace Data Cloud. Generate your Bearer Token from the API management console.
02
Initiate Your First API Call
Send a POST request with a text prompt to /sora/videos. You can use SDK, cURL, or any HTTP client.
03
Integration and Expansion
Embed the API into your application. Use Webhook for asynchronous processing and confidently scale to production.
Why Choose Ace Data Cloud Over Other Sora APIs?
Check out our comparative advantages on the features that matter most to developers
Feature
Ace Data Cloud
Other Platforms
sora-2 + sora-2-pro models
✓
Partial support
Text to Video
✓
✓
Image to Video
✓
Partial support
Character-driven Video
✓
✗
OpenAPI 3.0 Specification
✓
✗
Webhook Callback
✓
Partial support
NDJSON Streaming
✓
✗
Pay-as-you-go
✓
Partial support
MCP Server (AI Agent Integration)
✓
✗
Comparison of Sora with Other AI Video Models
Hesitating between Sora, Luma, Veo, and other AI video platforms? Check out their comparisons.
Capability
Sora (via Ace Data)
Luma
Veo
Text to Video
✓
✓
✓
Image to Video
✓
✓
✓
Character-driven Video
✓
✗
✗
Up to 25 Seconds Video
✓
✗
✓
Multiple Aspect Ratios
✓
✓
✓
API Access
✓
✓
✓
Which Model is Right for You?
Choose the right Sora model based on your needs for quality, duration, and budget
Recommended
The best value choice, suitable for most video generation scenarios. Fast, stable, and low-cost.
✓ Text to Video + Image to Video
✓ Character-driven Video
✓ 10 seconds / 15 seconds video
✓ Landscape / Portrait / Square
✓ As low as $0.053 / call
Highest quality output, supports 25 seconds long videos. Suitable for professional content creation and commercial use.
✓ All features of sora-2
✓ Higher video quality
✓ Supports 25 seconds long videos
✓ Suitable for commercial output
✓ As low as $0.53 / call
Transparent pay-as-you-go pricing. No subscription fees. No hidden costs. Pay only for usage.
Bulk packages up to 27% discount
Pay-as-you-go
Video Generation
$0.053
/ call
Charged by model - generating 1 video per call
✓ sora-2: as low as $0.053 / call
✓ sora-2-pro: as low as $0.53 / call
✓ Text to Video + Image to Video
✓ Character-driven Video
✓ Webhook + Streaming
✓ Task polling - free
View Pricing Details
View API Documentation
Enterprise Edition
Custom
Bulk discounts for high-usage teams
✓ Usage-based discounts
✓ Priority support
✓ Dedicated account manager
✓ Custom rate limits
✓ SLA guarantees
Contact Sales
Frequently Asked Questions
Everything you need to know about using the Sora API
Does Sora have an official API?
▾
OpenAI currently does not provide a standalone public Sora REST API. Sora is only available to ChatGPT Plus/Pro users through the web interface. Ace Data Cloud offers a stable, production-ready API that gives you full access to Sora's video generation capabilities, including the sora-2 and sora-2-pro models.
What is the pricing model?
▾
We use a pay-as-you-go model with no subscription or monthly fees. The sora-2 model starts at $0.053/call, and the sora-2-pro model starts at $0.53/call. Bulk packages can enjoy up to a 27% discount. Task polling is free forever.
Which models are supported?
▾
We support two versions of the Sora model: sora-2 (standard version, best value) and sora-2-pro (professional version, higher quality, supports 25 seconds long videos). We will support new models released by OpenAI as soon as possible.
How to handle longer generation times?
▾
Three ways: (1) Use callback_url - set a Webhook URL, and we will POST the results once completed. (2) Use NDJSON streaming - set the Accept: application/x-ndjson request header to get real-time progress. (3) Poll through /sora/tasks - this endpoint is free and allows you to check the status at any time.
Is image to video supported?
▾
Yes. Pass the reference image links through the image_urls parameter in the request, and Sora will generate a video based on the image content and your text prompt. You can also achieve character-driven video generation through character_url.
What video specifications are supported?
▾
Video durations supported are 10 seconds, 15 seconds, and 25 seconds (25 seconds only for sora-2-pro). Aspect ratios supported are landscape, portrait, and square. Resolutions supported are small and large.
Can it be used with AI Agents like Claude or ChatGPT?
▾
Yes! We provide an official MCP Server (mcp-sora) that can be directly integrated with Claude Desktop, VS Code, and other MCP-compatible AI tools. Your AI Agent can generate videos through natural language conversations. We also provide standard REST API + OpenAPI specification to support any other integration methods.
What is "character-driven video"?
▾
Character-driven video allows you to upload a reference video through character_url, and Sora will maintain the appearance and motion style of that character in the generated video. Note: Real people cannot appear in the reference video, or it will fail to generate. You can specify the time range for the character's appearance in the video using character_start and character_end.
Explore our complete suite of AI APIs covering video, image, music, and more
Quick Start
curl --request POST " https://api.acedata.cloud/sora/tasks" \
--header " Authorization: Bearer YOUR_API_KEY" \
--header " Content-Type: application/json" \
--data ' {}'
Explore the supported endpoints and integration guides for Sora Video Generation.
If you meet any issue, please check support info or browse the latest documentation on docs.acedata.cloud .