1:"$Sreact.fragment"
3:I[54118,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1737","static/chunks/fe207bbb-c84ed91deca4f888.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4094","static/chunks/4094-eaa6158623fe27ff.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4982","static/chunks/4982-a4b2ee93ffd82ffd.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1810","static/chunks/1810-cf4ca0391c1ddf2a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7979","static/chunks/7979-1799576a8e82a4f3.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","144","static/chunks/144-1a048554a0613a1b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2610","static/chunks/2610-c41f461a4ed7cf24.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","528","static/chunks/528-7ef2006e50a52549.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9919","static/chunks/9919-b585857c6e10fb85.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9326","static/chunks/9326-103822841b140d80.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4077","static/chunks/4077-cba4e88bdb106467.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1924","static/chunks/1924-8c4ee98e9b0dbf83.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2530","static/chunks/2530-9eb218eca5ffc00b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7177","static/chunks/app/layout-75dbb92d3cda2f1c.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"Providers"]
4:I[98195,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1737","static/chunks/fe207bbb-c84ed91deca4f888.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4094","static/chunks/4094-eaa6158623fe27ff.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4982","static/chunks/4982-a4b2ee93ffd82ffd.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1810","static/chunks/1810-cf4ca0391c1ddf2a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7979","static/chunks/7979-1799576a8e82a4f3.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","144","static/chunks/144-1a048554a0613a1b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2610","static/chunks/2610-c41f461a4ed7cf24.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","528","static/chunks/528-7ef2006e50a52549.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9919","static/chunks/9919-b585857c6e10fb85.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9326","static/chunks/9326-103822841b140d80.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4077","static/chunks/4077-cba4e88bdb106467.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1924","static/chunks/1924-8c4ee98e9b0dbf83.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2530","static/chunks/2530-9eb218eca5ffc00b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7177","static/chunks/app/layout-75dbb92d3cda2f1c.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"GoogleTagManager"]
5:I[4411,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1737","static/chunks/fe207bbb-c84ed91deca4f888.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4094","static/chunks/4094-eaa6158623fe27ff.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4982","static/chunks/4982-a4b2ee93ffd82ffd.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1810","static/chunks/1810-cf4ca0391c1ddf2a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7979","static/chunks/7979-1799576a8e82a4f3.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","144","static/chunks/144-1a048554a0613a1b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2610","static/chunks/2610-c41f461a4ed7cf24.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","528","static/chunks/528-7ef2006e50a52549.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9919","static/chunks/9919-b585857c6e10fb85.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9326","static/chunks/9326-103822841b140d80.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4077","static/chunks/4077-cba4e88bdb106467.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1924","static/chunks/1924-8c4ee98e9b0dbf83.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2530","static/chunks/2530-9eb218eca5ffc00b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7177","static/chunks/app/layout-75dbb92d3cda2f1c.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"FilmAwardStrip"]
6:"$Sreact.suspense"
7:I[40459,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1737","static/chunks/fe207bbb-c84ed91deca4f888.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4094","static/chunks/4094-eaa6158623fe27ff.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4982","static/chunks/4982-a4b2ee93ffd82ffd.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1810","static/chunks/1810-cf4ca0391c1ddf2a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7979","static/chunks/7979-1799576a8e82a4f3.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","144","static/chunks/144-1a048554a0613a1b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2610","static/chunks/2610-c41f461a4ed7cf24.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","528","static/chunks/528-7ef2006e50a52549.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9919","static/chunks/9919-b585857c6e10fb85.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9326","static/chunks/9326-103822841b140d80.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4077","static/chunks/4077-cba4e88bdb106467.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1924","static/chunks/1924-8c4ee98e9b0dbf83.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2530","static/chunks/2530-9eb218eca5ffc00b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7177","static/chunks/app/layout-75dbb92d3cda2f1c.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"Navbar"]
8:I[15848,[],""]
9:I[55256,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","8039","static/chunks/app/error-332e154bd557e323.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"default"]
a:I[62142,[],""]
1a:I[79302,["4219","static/chunks/app/global-error-f07d85f704128170.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"default"]
:HL["/_next/static/media/7d4881bb7e1bf84d-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/css/c91c557421edbcc1.css?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","style"]
:HL["/_next/static/css/9c4f0c3be44ead33.css?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","style"]
2:T412,
(function () {
  window.dataLayer = window.dataLayer || [];
  function gtag() { window.dataLayer.push(arguments); }

  gtag('consent', 'default', {
    ad_storage: 'denied',
    ad_user_data: 'denied',
    ad_personalization: 'denied',
    analytics_storage: 'denied',
    functionality_storage: 'denied',
    personalization_storage: 'denied',
    security_storage: 'granted'
  });

  try {
    var match = document.cookie.match(/(?:^|;\s*)gdpr_consent=([^;]*)/);
    if (!match) return;
    var saved = JSON.parse(decodeURIComponent(match[1]));
    if (!saved || typeof saved !== 'object') return;
    gtag('consent', 'update', {
      analytics_storage: saved.analytics ? 'granted' : 'denied',
      ad_storage: saved.marketing ? 'granted' : 'denied',
      ad_user_data: saved.marketing ? 'granted' : 'denied',
      ad_personalization: saved.marketing ? 'granted' : 'denied',
      functionality_storage: saved.functional ? 'granted' : 'denied'
    });
  } catch (e) {
    /* malformed cookie â€” the denied default stands */
  }
})();
0:{"P":null,"b":"vX-6P7rGIK5v7u82yfIum","p":"","c":["","models","happyhorse","api"],"i":false,"f":[[["",{"children":["models",{"children":[["route","happyhorse","d"],{"children":["api",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c91c557421edbcc1.css?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/9c4f0c3be44ead33.css?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"__variable_8c25df","children":[["$","head",null,{"children":[["$","script",null,{"id":"consent-mode-default","dangerouslySetInnerHTML":{"__html":"$2"}}],["$","script",null,{"id":"film-award-dismissed","dangerouslySetInnerHTML":{"__html":"try{if(document.cookie.split(';').some(function(c){return c.trim()===\"film_award_2027_dismissed=1\"}))document.documentElement.setAttribute(\"data-film-award-dismissed\",'')}catch(e){}"}}],["$","link",null,{"rel":"preconnect","href":"https://images.segmind.com"}],["$","link",null,{"rel":"preconnect","href":"https://segmind-resources.s3.amazonaws.com"}],["$","link",null,{"rel":"preconnect","href":"https://www.googletagmanager.com"}],["$","link",null,{"rel":"preload","href":"/fonts/Satoshi-Variable.woff2","as":"font","type":"font/woff2","crossOrigin":"anonymous"}]]}],["$","body",null,{"className":"antialiased bg-background text-foreground","children":["$","$L3",null,{"children":[["$","$L4",null,{"gtmId":"GTM-MHW23H4Z"}],["$","div",null,{"className":"min-h-screen flex flex-col","children":[["$","$L5",null,{}],["$","$6",null,{"fallback":["$","div",null,{"className":"h-16 bg-background/95 backdrop-blur border-b border-border"}],"children":["$","$L7",null,{}]}],["$","main",null,{"className":"flex-1","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$9","errorStyles":[],"errorScripts":[],"template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","div",null,{"className":"min-h-screen bg-background flex items-center justify-center px-4 sm:px-6 lg:px-8","children":["$","div",null,{"className":"max-w-lg w-full text-center","children":[["$","div",null,{"className":"mb-8","children":["$","div",null,{"className":"relative","children":[["$","h1",null,{"className":"text-9xl font-bold text-muted/20 dark:text-muted/10 select-none","children":"404"}],["$","div",null,{"className":"absolute inset-0 flex items-center justify-center","children":["$","div",null,{"className":"relative","children":[["$","div",null,{"className":"absolute -top-8 -left-8 w-16 h-16 bg-brand-100 dark:bg-brand-950 rounded-full flex items-center justify-center animate-bounce","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-zap w-8 h-8 text-brand-500","children":["$Lb","$undefined"]}]}],"$Lc","$Ld"]}]}]]}]}],"$Le","$Lf","$L10","$L11"]}]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],"$L12"]}],"$L13","$L14"]}]}]]}]]}],{"children":["models","$L15",{"children":[["route","happyhorse","d"],"$L16",{"children":["api","$L17",{"children":["__PAGE__","$L18",{},null,false]},null,false]},null,false]},null,false]},null,false],"$L19",false]],"m":"$undefined","G":["$1a",[]],"s":false,"S":true}
1b:I[75289,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6541","static/chunks/fb4e7fc9-e31ad622f5fde25d.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9761","static/chunks/998e86a0-e112630ec4db17dc.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4094","static/chunks/4094-eaa6158623fe27ff.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4982","static/chunks/4982-a4b2ee93ffd82ffd.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1810","static/chunks/1810-cf4ca0391c1ddf2a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6118","static/chunks/6118-7328b7d3f629a5ef.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7979","static/chunks/7979-1799576a8e82a4f3.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","393","static/chunks/393-7cd2157fc3790475.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3985","static/chunks/3985-1f9bcb95de313d61.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2610","static/chunks/2610-c41f461a4ed7cf24.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4844","static/chunks/4844-011fe3465334e7d0.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9305","static/chunks/9305-0f5d0f2a661afddc.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","713","static/chunks/713-dcb3ca4f0233704d.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3504","static/chunks/3504-ae9bc2dc93d2ef47.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9919","static/chunks/9919-b585857c6e10fb85.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9326","static/chunks/9326-103822841b140d80.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1885","static/chunks/1885-f206f5873f09b3e2.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4077","static/chunks/4077-cba4e88bdb106467.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5126","static/chunks/5126-bdde68ce894e4935.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5642","static/chunks/5642-c80cb7ee6e914a6a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1924","static/chunks/1924-8c4ee98e9b0dbf83.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6372","static/chunks/6372-3e2880fc7d769d1f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1289","static/chunks/1289-4fdf72847f7ef615.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","8382","static/chunks/8382-004a14550e3769cc.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1951","static/chunks/app/models/%5Broute%5D/page-c5fd4df0a8a5cab4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],""]
1c:I[4717,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1737","static/chunks/fe207bbb-c84ed91deca4f888.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4094","static/chunks/4094-eaa6158623fe27ff.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4982","static/chunks/4982-a4b2ee93ffd82ffd.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1810","static/chunks/1810-cf4ca0391c1ddf2a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7979","static/chunks/7979-1799576a8e82a4f3.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","144","static/chunks/144-1a048554a0613a1b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2610","static/chunks/2610-c41f461a4ed7cf24.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","528","static/chunks/528-7ef2006e50a52549.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9919","static/chunks/9919-b585857c6e10fb85.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9326","static/chunks/9326-103822841b140d80.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4077","static/chunks/4077-cba4e88bdb106467.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1924","static/chunks/1924-8c4ee98e9b0dbf83.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2530","static/chunks/2530-9eb218eca5ffc00b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7177","static/chunks/app/layout-75dbb92d3cda2f1c.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"Footer"]
1d:I[35733,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6140","static/chunks/6140-b94b4e43e1bb103d.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","8012","static/chunks/app/models/%5Broute%5D/api/page-117c8b87bdd6a7b4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"Toaster"]
1e:I[20659,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1737","static/chunks/fe207bbb-c84ed91deca4f888.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4094","static/chunks/4094-eaa6158623fe27ff.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4982","static/chunks/4982-a4b2ee93ffd82ffd.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1810","static/chunks/1810-cf4ca0391c1ddf2a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7979","static/chunks/7979-1799576a8e82a4f3.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","144","static/chunks/144-1a048554a0613a1b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2610","static/chunks/2610-c41f461a4ed7cf24.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","528","static/chunks/528-7ef2006e50a52549.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9919","static/chunks/9919-b585857c6e10fb85.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9326","static/chunks/9326-103822841b140d80.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4077","static/chunks/4077-cba4e88bdb106467.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1924","static/chunks/1924-8c4ee98e9b0dbf83.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","2530","static/chunks/2530-9eb218eca5ffc00b.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7177","static/chunks/app/layout-75dbb92d3cda2f1c.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"LazyLayoutExtras"]
21:I[30661,[],"OutletBoundary"]
23:I[72272,[],"AsyncMetadataOutlet"]
25:I[30661,[],"ViewportBoundary"]
27:I[30661,[],"MetadataBoundary"]
b:["$","path","1xq2db",{"d":"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"}]
c:["$","div",null,{"className":"absolute -top-4 -right-12 w-12 h-12 bg-brand-secondary-100 dark:bg-brand-secondary-950 rounded-full flex items-center justify-center animate-pulse","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-search w-6 h-6 text-brand-secondary-500","children":[["$","circle","4ej97u",{"cx":"11","cy":"11","r":"8"}],["$","path","1qie3q",{"d":"m21 21-4.3-4.3"}],"$undefined"]}]}]
d:["$","div",null,{"className":"absolute -bottom-6 left-4 w-10 h-10 bg-green-100 dark:bg-green-950 rounded-full flex items-center justify-center animate-bounce delay-200","children":["$","div",null,{"className":"w-3 h-3 bg-green-500 rounded-full"}]}]
e:["$","div",null,{"className":"mb-8","children":[["$","h2",null,{"className":"text-2xl font-semibold text-foreground mb-4","children":"Page Not Found"}],["$","p",null,{"className":"text-muted-foreground text-lg mb-2","children":"Oops! The page you're looking for doesn't exist."}],["$","p",null,{"className":"text-muted-foreground","children":"It might have been moved, deleted, or you entered the wrong URL."}]]}]
f:["$","div",null,{"className":"flex flex-col sm:flex-row gap-4 justify-center items-center mb-12","children":[["$","$L1b",null,{"href":"/","className":"inline-flex items-center justify-center gap-2 px-6 py-3 bg-brand-600 dark:bg-brand-500 text-white rounded-lg hover:bg-brand-700 dark:hover:bg-brand-600 transition-colors font-medium text-base w-full sm:w-auto","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-house w-5 h-5","children":[["$","path","5wwlr5",{"d":"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"}],["$","path","1d0kgt",{"d":"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}],"$undefined"]}],"Go Home"]}],["$","$L1b",null,{"href":"/models","className":"inline-flex items-center justify-center gap-2 px-6 py-3 bg-surface border border-border text-foreground rounded-lg hover:bg-surface/80 transition-colors font-medium text-base w-full sm:w-auto","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-search w-5 h-5","children":[["$","circle","4ej97u",{"cx":"11","cy":"11","r":"8"}],["$","path","1qie3q",{"d":"m21 21-4.3-4.3"}],"$undefined"]}],"Browse Models"]}]]}]
10:["$","div",null,{"className":"border-t border-border pt-8","children":[["$","p",null,{"className":"text-sm text-muted-foreground mb-4","children":"Popular destinations:"}],["$","div",null,{"className":"flex flex-wrap justify-center gap-4 text-sm","children":[["$","$L1b",null,{"href":"/models/tags/image","className":"text-brand-600 dark:text-brand-400 hover:text-brand-700 dark:hover:text-brand-300 transition-colors","children":"Image Models"}],["$","span",null,{"className":"text-muted-foreground","children":"â€¢"}],["$","$L1b",null,{"href":"/models/tags/video","className":"text-brand-600 dark:text-brand-400 hover:text-brand-700 dark:hover:text-brand-300 transition-colors","children":"Video Models"}],["$","span",null,{"className":"text-muted-foreground","children":"â€¢"}],["$","$L1b",null,{"href":"/models/tags/llms","className":"text-brand-600 dark:text-brand-400 hover:text-brand-700 dark:hover:text-brand-300 transition-colors","children":"LLMs"}],["$","span",null,{"className":"text-muted-foreground","children":"â€¢"}],["$","$L1b",null,{"href":"/models","className":"text-brand-600 dark:text-brand-400 hover:text-brand-700 dark:hover:text-brand-300 transition-colors","children":"All Models"}]]}]]}]
11:["$","div",null,{"className":"mt-8","children":["$","$L1b",null,{"href":"/","className":"inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-left w-4 h-4 mr-2","children":[["$","path","1l729n",{"d":"m12 19-7-7 7-7"}],["$","path","x3x0zl",{"d":"M19 12H5"}],"$undefined"]}],"Go back to homepage"]}]}]
12:["$","$L1c",null,{}]
13:["$","$L1d",null,{"closeButton":true,"toastOptions":{"duration":30000}}]
14:["$","$L1e",null,{}]
15:["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
16:["$","$1","c",{"children":[null,"$L1f"]}]
17:["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
18:["$","$1","c",{"children":["$L20",null,["$","$L21",null,{"children":["$L22",["$","$L23",null,{"promise":"$@24"}]]}]]}]
19:["$","$1","h",{"children":[null,[["$","$L25",null,{"children":"$L26"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L27",null,{"children":["$","div",null,{"hidden":true,"children":["$","$6",null,{"fallback":null,"children":"$L28"}]}]}]]}]
26:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
22:null
2a:I[53921,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","5289","static/chunks/5289-131715863bbab062.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7213","static/chunks/7213-ed3acee0c865cd60.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7256","static/chunks/app/models/%5Broute%5D/layout-23522cb6540a765c.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"default"]
2f:I[4704,[],"IconMark"]
20:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"@id\":\"https://www.segmind.com/models/happyhorse/api\",\"name\":\"HappyHorse 1.0 API Documentation\",\"description\":\"Complete API documentation for HappyHorse 1.0. Code examples in Python, JavaScript, and cURL. Integrate this AI model into your applications with Segmind's\",\"url\":\"https://www.segmind.com/models/happyhorse/api\",\"about\":{\"@id\":\"https://www.segmind.com/models/happyhorse\"},\"publisher\":{\"@type\":\"Organization\",\"@id\":\"https://www.segmind.com/#organization\",\"name\":\"Segmind\",\"url\":\"https://www.segmind.com\",\"logo\":\"https://www.segmind.com/favicon.svg\"}}"}}],"$L29"]
2b:Tf7e,# HappyHorse 1.0 â€” Text-to-Video & Image-to-Video AI Model

## What is HappyHorse 1.0?

HappyHorse 1.0 is Alibaba's unified video generation model, currently ranked #1 on the Artificial Analysis Video Arena for both text-to-video and image-to-video generation. Built on a 15-billion-parameter single-stream Transformer, HappyHorse generates cinematic video and synchronized audio in a single forward pass â€” no separate audio pipeline required.

The model supports native 1080p output, multilingual lip-sync across seven languages, and duration control from 2 to 15 seconds. Whether you are creating product demos, social media clips, or documentary-style sequences, HappyHorse delivers broadcast-quality results through a simple API call.

## Key Features

HappyHorse combines several capabilities that set it apart from other video generation models. Joint audio-video synthesis produces speech, ambient sound, and lip-synced motion together. Native 1080p resolution ensures delivery-ready output without upscaling. The model supports both text-to-video and image-to-video modes, with optional first-frame and last-frame inputs for controlled transitions. Multilingual lip-sync covers English, Mandarin, Cantonese, Japanese, Korean, German, and French at phoneme-level precision. A built-in prompt extension feature rewrites short prompts into detailed cinematic descriptions automatically.

## Best Use Cases

HappyHorse performs exceptionally well for cinematic nature footage and documentary-style sequences with smooth motion and warm color grading. Testing confirms strong results on nature and animal prompts, with natural dust particles, shallow depth of field, and golden-hour lighting rendered accurately.

Product teams can use image-to-video mode to animate concept art or hero shots. Marketing teams benefit from the multilingual lip-sync for localized explainer videos without separate dubbing. Short-form content creators can generate vertical 9:16 clips optimized for TikTok, Reels, and Shorts. The audio-driven mode enables talking-head videos synced to uploaded speech files.

## Prompt Tips and Output Quality

Describe your scene with specific motion, camera style, and lighting cues. Prompts like "cinematic slow motion, warm golden hour lighting, shallow depth of field" consistently produce high-quality results. Enable prompt extension for short descriptions â€” the built-in LLM adds cinematic detail automatically.

Use 720P for fast iteration at approximately 95 seconds per generation, then switch to 1080P for final delivery. Set negative prompts to "blurry, low quality, distorted, watermark, text" to suppress common artifacts. A 5-second duration at 16:9 aspect ratio is the recommended starting point for most use cases.

## FAQs

**Does HappyHorse generate audio with the video?**
Yes. HappyHorse produces synchronized audio â€” including speech, ambient sound, and music â€” in the same generation pass as the video. No separate audio model is needed.

**What languages does lip-sync support?**
Lip-sync works across seven languages: English, Mandarin, Cantonese, Japanese, Korean, German, and French, with phoneme-level alignment for natural mouth movements.

**What is the maximum video duration?**
HappyHorse supports videos from 2 to 15 seconds per generation.

**Can I control the starting and ending frames?**
Yes. In image-to-video mode, you can provide both a first frame and a last frame. The model generates smooth motion between them.

**How does prompt extension work?**
When enabled, an LLM rewrites your prompt with cinematic detail â€” camera angles, lighting, motion cues â€” before generation. This improves output quality significantly for short or terse prompts.

**What is the difference between 720P and 1080P?**
720P generates faster and costs $0.875 per clip â€” ideal for previews. 1080P costs $1.50 and delivers broadcast-quality resolution for final output.
2c:T99d,# How to Use HappyHorse 1.0 for AI Video Generation

HappyHorse 1.0 generates cinematic video with synchronized audio from text prompts, reference images, or audio inputs. This guide covers the best parameter settings for different workflows.

## Getting Started

The simplest way to generate a video is text-to-video mode. Provide a detailed prompt describing your scene, subjects, motion, and camera style. Set resolution to 720P for fast previews or 1080P for final delivery. A 5-second duration at 16:9 aspect ratio is the recommended default.

## Recommended Settings

These settings were validated during testing and produce consistent, high-quality results:

**Quick preview:** Resolution 720P, Duration 5s, Prompt Extend on, Aspect Ratio 16:9. Generates in approximately 95 seconds.

**Production quality:** Resolution 1080P, Duration 5-10s, Prompt Extend off (use your own detailed prompt), Aspect Ratio 16:9.

**Vertical social content:** Resolution 720P, Duration 5s, Aspect Ratio 9:16. Optimized for TikTok, Reels, and Shorts.

**Image-to-video:** Upload a first frame image, optionally add a last frame for controlled transitions. Aspect ratio is determined by the input image.

## Writing Effective Prompts

HappyHorse responds best to prompts that specify motion, lighting, and camera behavior. Include terms like "cinematic slow motion," "tracking shot," "shallow depth of field," or "golden hour lighting" for professional results. The model handles nature, animals, and documentary-style scenes particularly well.

Enable prompt extension for brief descriptions â€” it adds cinematic detail automatically. Disable it when you need precise control over every element.

## Suppressing Artifacts

Set the negative prompt to "blurry, low quality, distorted, watermark, text" to suppress common artifacts. This combination was tested and effectively removes unwanted elements from output.

## Audio and Lip-Sync

For talking-head or voiceover-driven scenes, provide an audio URL (MP3 or WAV, 3-30 seconds, max 15MB). HappyHorse generates lip-synced motion aligned to the speech at phoneme level. Supported languages include English, Mandarin, Cantonese, Japanese, Korean, German, and French.

## Cost Optimization

Use 720P for iteration and testing, then switch to 1080P only for final renders. At $0.875 per 720P generation, you can preview multiple variations before committing to a $1.50 production render.
2d:T54a,## How Pricing Works

HappyHorse 1.0 uses per-second, resolution-based pricing. You pay based on the duration and resolution of the generated video. Shorter clips cost less, so you only pay for the output you need.

### Pricing Table

| Resolution | Rate | 3s Video | 5s Video | 10s Video | 15s Video |
|---|---|---|---|---|---|
| 720P | $0.2002/s | $0.60 | $1.00 | $2.00 | $3.00 |
| 1080P | $0.3432/s | $1.03 | $1.72 | $3.43 | $5.15 |

### Cost Optimization Tips

- Use 720P for iteration and prompt testing, then switch to 1080P only for final renders. 720P costs 42% less per second.
- Keep preview clips short (3-5 seconds) during prompt iteration. A 3-second 720P preview costs just $0.60.
- Prompt extension is free and significantly improves output quality on short prompts. Always enable it unless you need precise control.
- Audio-driven lip-sync and image-to-video modes cost the same as text-to-video at the same resolution and duration. No surcharge for advanced input types.

### Example Scenario

A marketing agency producing 20 social video ads per week: 15 preview renders at 720P, 5 seconds each ($1.00 x 15 = $15.00) plus 5 final 1080P renders at 5 seconds ($1.72 x 5 = $8.60). Weekly total: $23.60. Monthly: approximately $94.40 for 80 production-ready videos. Longer 10-second hero videos at 1080P cost $3.43 each.1f:["$","$L2a",null,{"route":"happyhorse","modelDetails":{"title":"HappyHorse 1.0","thumbnail_image":"https://segmind-resources.s3.amazonaws.com/output/happyhorse-1324.webp","type":"imageToVideo","model_type":"SO","is_depreciated":false,"meta_description":"Generate cinematic 1080p videos with synchronized audio, lip-sync, and native multilingual support from text or images.","seo_description":"$2b","guide":"$2c","pricing_guide":"$2d","artifacts":[],"default_image_output":"https://segmind-resources.s3.amazonaws.com/output/happyhorse-example-output.mp4","default_response":null,"parameters":{"prompt":{"isRequired":true,"affectsPricing":false,"type":"str","description":"Describe scene, subjects, motion, camera, and audio cues. Cinematic prompts with lighting and camera details produce the best results.","isEnum":false,"hidden":false,"isAdvanced":false,"displayOrder":0,"component":"textarea","label":"Prompt","default":"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style","displayValue":"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"},"image":{"isRequired":false,"affectsPricing":false,"type":"image","description":"First frame for image-to-video mode (URL or base64). Leave empty for text-to-video generation.","isEnum":false,"hidden":false,"isAdvanced":false,"displayOrder":1,"component":"image","label":"First Frame (optional)","default":null},"audio_url":{"isRequired":false,"affectsPricing":false,"type":"str","format":"uri","description":"Audio URL (MP3/WAV, 3-30s, max 15MB) for lip-sync. Use speech audio for talking-head or voiceover-driven scenes.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":2,"component":"textarea","label":"Audio URL","default":null},"last_frame":{"isRequired":false,"affectsPricing":false,"type":"image","description":"Ending frame for image-to-video mode only. Creates smooth transitions between start and end frames.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":3,"component":"image","label":"Last Frame","default":null},"negative_prompt":{"isRequired":false,"affectsPricing":false,"type":"str","description":"Elements to suppress (blur, artifacts, watermark). Tested: 'blurry, low quality, distorted, watermark, text' works well.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":4,"component":"textarea","label":"Negative Prompt","default":"blurry, low quality, distorted, watermark, text","displayValue":"blurry, low quality, distorted, watermark, text"},"resolution":{"isRequired":false,"affectsPricing":true,"type":"str","description":"Output resolution. 720P for fast previews ($0.875), 1080P for final delivery ($1.50).","isEnum":true,"values":["720P","1080P"],"hidden":false,"isAdvanced":false,"displayOrder":5,"component":"dropdown","label":"Resolution","default":"720P","displayValue":"720P"},"duration":{"isRequired":false,"affectsPricing":false,"type":"int","description":"Video length in seconds (3-15). 5s is the sweet spot for quality and speed.","isEnum":false,"hidden":false,"isAdvanced":false,"displayOrder":6,"component":"slider","label":"Duration","default":5,"displayValue":5,"min":3,"max":15},"aspect_ratio":{"isRequired":false,"affectsPricing":false,"type":"str","description":"Aspect ratio for text-to-video only (ignored with image input). 16:9 for landscape, 9:16 for vertical.","isEnum":true,"values":["16:9","9:16","1:1","4:3","3:4"],"hidden":false,"isAdvanced":true,"displayOrder":7,"component":"dropdown","label":"Aspect Ratio","default":"16:9","displayValue":"16:9"},"seed":{"isRequired":false,"affectsPricing":false,"type":"int","description":"Reproducibility seed (0-2147483647). Set a fixed seed to reproduce the same output across runs.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":8,"component":"input","label":"Seed","default":null},"prompt_extend":{"isRequired":false,"affectsPricing":false,"type":"bool","description":"LLM-rewrites short prompts for cinematic detail. Recommended on for brief prompts, off for precise control.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":9,"component":"checkbox","label":"Prompt Extend","default":true,"displayValue":true},"watermark":{"isRequired":false,"affectsPricing":false,"type":"bool","description":"Adds 'AI Generated' watermark to output. Disable for clean production-ready video.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":10,"component":"checkbox","label":"Watermark","default":false,"displayValue":false},"video":{"isRequired":false,"affectsPricing":false,"type":"str","format":"uri","description":"URL of an existing video to edit. Provide this with a prompt to restyle, recolour, or modify the video. Triggers video-edit mode.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":12,"component":"textbox","label":"Source Video","default":null},"reference_images":{"isRequired":false,"affectsPricing":false,"type":"array","itemType":"image","description":"Up to 5 reference image URLs (or uploads). Used as character/scene anchors for reference-to-video mode.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":13,"component":"textarea","label":"Reference Images","default":null},"reference_videos":{"isRequired":false,"affectsPricing":false,"type":"array","itemType":"str","format":"uri","description":"Up to 3 reference video URLs (or uploads). Used as motion/style anchors for reference-to-video mode.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":14,"component":"textarea","label":"Reference Videos","default":null},"reference_voice":{"isRequired":false,"affectsPricing":false,"type":"str","format":"uri","description":"Audio file URL for character voice cloning in reference-to-video mode.","isEnum":false,"hidden":false,"isAdvanced":true,"displayOrder":15,"component":"textbox","label":"Reference Voice (Audio)","default":null}},"endpoints":{"main":"/v1/happyhorse"},"api_notes":[],"model_outputs":null,"llm_capabilities":null,"license":"","github_link":null,"inference_provider":"DASHSCOPE","created_ts":"2026-04-28 04:43:26.844001+00:00","slug":"happyhorse","name":"HappyHorse 1.0","description":"Cinematic 1080p text-to-video with native audio and lip-sync.","category":"imageToVideo","modality":"video","input":"image","output":"video","provider":"ALIBABA","thumbnail_url":"https://segmind-resources.s3.amazonaws.com/output/happyhorse-1324.webp","is_new":false,"coming_soon":false,"popularity_score":33,"category_percentile":72,"average_cost":2.9257799999999996,"latency_seconds":157.68521,"created_at":"2026-04-28 04:43:26.844001+00:00","parameters_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"prompt":{"type":"string","title":"Prompt","description":"Describe scene, subjects, motion, camera, and audio cues. Cinematic prompts with lighting and camera details produce the best results.","default":"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style","x-ui-metadata":{"order":0,"advanced":false,"hidden":false}},"image":{"type":"string","format":"uri","x-file-metadata":{"allowed-types":["image/*"]},"title":"First Frame (optional)","description":"First frame for image-to-video mode (URL or base64). Leave empty for text-to-video generation.","x-ui-metadata":{"order":1,"advanced":false,"hidden":false}},"audio_url":{"type":"string","format":"uri","x-file-metadata":{"allowed-types":["audio/*"]},"title":"Audio URL","description":"Audio URL (MP3/WAV, 3-30s, max 15MB) for lip-sync. Use speech audio for talking-head or voiceover-driven scenes.","x-ui-metadata":{"order":2,"advanced":true,"hidden":false}},"last_frame":{"type":"string","format":"uri","x-file-metadata":{"allowed-types":["image/*"]},"title":"Last Frame","description":"Ending frame for image-to-video mode only. Creates smooth transitions between start and end frames.","x-ui-metadata":{"order":3,"advanced":true,"hidden":false}},"negative_prompt":{"type":"string","title":"Negative Prompt","description":"Elements to suppress (blur, artifacts, watermark). Tested: 'blurry, low quality, distorted, watermark, text' works well.","default":"blurry, low quality, distorted, watermark, text","x-ui-metadata":{"order":4,"advanced":true,"hidden":false}},"resolution":{"type":"string","title":"Resolution","description":"Output resolution. 720P for fast previews ($0.875), 1080P for final delivery ($1.50).","oneOf":[{"const":"720p","title":"720p"},{"const":"1080p","title":"1080p"}],"default":"720p","x-ui-metadata":{"order":5,"advanced":false,"hidden":false}},"duration":{"type":"integer","title":"Duration","description":"Video length in seconds (3-15). 5s is the sweet spot for quality and speed.","default":5,"x-ui-metadata":{"order":6,"advanced":false,"hidden":false},"minimum":2,"maximum":15},"aspect_ratio":{"type":"string","title":"Aspect Ratio","description":"Aspect ratio for text-to-video only (ignored with image input). 16:9 for landscape, 9:16 for vertical.","oneOf":[{"const":"16:9","title":"16:9"},{"const":"9:16","title":"9:16"},{"const":"1:1","title":"1:1"},{"const":"4:3","title":"4:3"},{"const":"3:4","title":"3:4"}],"default":"16:9","x-ui-metadata":{"order":7,"advanced":true,"hidden":false}},"seed":{"type":"integer","title":"Seed","description":"Reproducibility seed (0-2147483647). Set a fixed seed to reproduce the same output across runs.","x-ui-metadata":{"order":8,"advanced":true,"hidden":false},"default":0},"prompt_extend":{"type":"boolean","title":"Prompt Extend","description":"LLM-rewrites short prompts for cinematic detail. Recommended on for brief prompts, off for precise control.","default":true,"x-ui-metadata":{"order":9,"advanced":true,"hidden":false}},"watermark":{"type":"boolean","title":"Watermark","description":"Adds 'AI Generated' watermark to output. Disable for clean production-ready video.","default":false,"x-ui-metadata":{"order":10,"advanced":true,"hidden":false}},"video":{"type":"string","format":"uri","x-file-metadata":{"allowed-types":["video/*"]},"title":"Source Video","description":"URL of an existing video to edit. Provide this with a prompt to restyle, recolour, or modify the video. Triggers video-edit mode.","x-ui-metadata":{"order":11,"advanced":true,"hidden":false}},"reference_images":{"type":"array","items":{"type":"string","format":"uri","x-file-metadata":{"allowed-types":["image/*"]}},"title":"Reference Images","description":"Up to 5 reference image URLs (or uploads). Used as character/scene anchors for reference-to-video mode.","x-ui-metadata":{"order":12,"advanced":true,"hidden":false}},"reference_videos":{"type":"array","items":{"type":"string","format":"uri","x-file-metadata":{"allowed-types":["video/*"]}},"title":"Reference Videos","description":"Up to 3 reference video URLs (or uploads). Used as motion/style anchors for reference-to-video mode.","x-ui-metadata":{"order":13,"advanced":true,"hidden":false}},"reference_voice":{"type":"string","format":"uri","x-file-metadata":{"allowed-types":["audio/*"]},"title":"Reference Voice (Audio)","description":"Audio file URL for character voice cloning in reference-to-video mode.","x-ui-metadata":{"order":14,"advanced":true,"hidden":false}}},"required":["prompt"],"examples":[{"prompt":"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style","negative_prompt":"blurry, low quality, distorted, watermark, text","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_extend":true,"watermark":false}]}},"metrics":{"total_requests":null,"latency":157.68521},"children":"$L2e"}]
24:{"metadata":[["$","title","0",{"children":"HappyHorse 1.0 API Documentation | Segmind"}],["$","meta","1",{"name":"description","content":"Complete API documentation for HappyHorse 1.0. Code examples in Python, JavaScript, and cURL. Integrate this AI model into your applications with Segmind's serverless API."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","meta","3",{"name":"googlebot","content":"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1"}],["$","link","4",{"rel":"canonical","href":"https://www.segmind.com/models/happyhorse/api"}],["$","meta","5",{"property":"og:title","content":"HappyHorse 1.0 API Documentation"}],["$","meta","6",{"property":"og:description","content":"Complete API documentation for HappyHorse 1.0. Code examples in Python, JavaScript, and cURL. Integrate this AI model into your applications with Segmind's serverless API."}],["$","meta","7",{"property":"og:url","content":"https://www.segmind.com/models/happyhorse/api"}],["$","meta","8",{"property":"og:site_name","content":"Segmind"}],["$","meta","9",{"property":"og:image","content":"https://segmind-resources.s3.amazonaws.com/output/happyhorse-1324.webp"}],["$","meta","10",{"property":"og:type","content":"article"}],["$","meta","11",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","12",{"name":"twitter:title","content":"HappyHorse 1.0 API Documentation"}],["$","meta","13",{"name":"twitter:description","content":"API docs for HappyHorse 1.0. Python, JavaScript & cURL examples. Pay-as-you-go serverless API."}],["$","meta","14",{"name":"twitter:image","content":"https://segmind-resources.s3.amazonaws.com/output/happyhorse-1324.webp"}],["$","link","15",{"rel":"shortcut icon","href":"/favicon.ico"}],["$","link","16",{"rel":"icon","href":"/favicon.ico","sizes":"any"}],["$","link","17",{"rel":"icon","href":"/favicon-48x48.png","type":"image/png","sizes":"48x48"}],["$","link","18",{"rel":"icon","href":"/favicon-192x192.png","type":"image/png","sizes":"192x192"}],["$","link","19",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","20",{"rel":"apple-touch-icon","href":"/favicon-48x48.png"}],["$","$L2f","21",{}]],"error":null,"digest":"$undefined"}
28:"$24:metadata"
30:I[501,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6140","static/chunks/6140-b94b4e43e1bb103d.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","8012","static/chunks/app/models/%5Broute%5D/api/page-117c8b87bdd6a7b4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"default"]
2e:["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]
31:T59b,# pip install "segmind>=1.1.0"
# export SEGMIND_API_KEY="YOUR_API_KEY"
from segmind import SegmindClient, InferenceFailed, InferenceTimeout

# Async (v2) â€” recommended for long-running / video models.
# run() blocks up to 600s; submit_async + job.wait(timeout=...) sets a longer
# deadline and keeps the request_id so you can re-poll later.
client = SegmindClient()                      # reads SEGMIND_API_KEY
payload = {
    "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
    "negative_prompt": "blurry, low quality, distorted, watermark, text",
    "resolution": "720p",
    "duration": 5,
    "aspect_ratio": "16:9",
    "prompt_extend": True,
    "watermark": False,
}
job = client.submit_async("happyhorse", **payload)
print(job.request_id)                         # available immediately
try:
    result = job.wait(timeout=900, interval=2.0)
    print(result["status"])                  # COMPLETED
    print(result.get("output"))              # model output (e.g. video URL)
except InferenceTimeout as e:
    print("still running:", e.request_id)    # re-poll later with this id
except InferenceFailed as e:
    print("failed:", e.detail)

# Fast models (<=600s) can use the one-liner instead:
# result = segmind.run("happyhorse", **payload)32:T2153,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#6A737D"># pip install "segmind>=1.1.0"</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#6A737D"># export SEGMIND_API_KEY="YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#D73A49">from</span><span style="color:#24292E"> segmind </span><span style="color:#D73A49">import</span><span style="color:#24292E"> SegmindClient, InferenceFailed, InferenceTimeout</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Async (v2) â€” recommended for long-running / video models.</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#6A737D"># run() blocks up to 600s; submit_async + job.wait(timeout=...) sets a longer</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#6A737D"># deadline and keeps the request_id so you can re-poll later.</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#24292E">client </span><span style="color:#D73A49">=</span><span style="color:#24292E"> SegmindClient()                      </span><span style="color:#6A737D"># reads SEGMIND_API_KEY</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#24292E">payload </span><span style="color:#D73A49">=</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#032F62">    "prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">    "negative_prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"blurry, low quality, distorted, watermark, text"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">    "resolution"</span><span style="color:#24292E">: </span><span style="color:#032F62">"720p"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">    "duration"</span><span style="color:#24292E">: </span><span style="color:#005CC5">5</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#032F62">    "aspect_ratio"</span><span style="color:#24292E">: </span><span style="color:#032F62">"16:9"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#032F62">    "prompt_extend"</span><span style="color:#24292E">: </span><span style="color:#005CC5">True</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">    "watermark"</span><span style="color:#24292E">: </span><span style="color:#005CC5">False</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#24292E">job </span><span style="color:#D73A49">=</span><span style="color:#24292E"> client.submit_async(</span><span style="color:#032F62">"happyhorse"</span><span style="color:#24292E">, </span><span style="color:#D73A49">**</span><span style="color:#24292E">payload)</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#005CC5">print</span><span style="color:#24292E">(job.request_id)                         </span><span style="color:#6A737D"># available immediately</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#D73A49">try</span><span style="color:#24292E">:</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#24292E">    result </span><span style="color:#D73A49">=</span><span style="color:#24292E"> job.wait(</span><span style="color:#E36209">timeout</span><span style="color:#D73A49">=</span><span style="color:#005CC5">900</span><span style="color:#24292E">, </span><span style="color:#E36209">interval</span><span style="color:#D73A49">=</span><span style="color:#005CC5">2.0</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#005CC5">    print</span><span style="color:#24292E">(result[</span><span style="color:#032F62">"status"</span><span style="color:#24292E">])                  </span><span style="color:#6A737D"># COMPLETED</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#005CC5">    print</span><span style="color:#24292E">(result.get(</span><span style="color:#032F62">"output"</span><span style="color:#24292E">))              </span><span style="color:#6A737D"># model output (e.g. video URL)</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#D73A49">except</span><span style="color:#24292E"> InferenceTimeout </span><span style="color:#D73A49">as</span><span style="color:#24292E"> e:</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#005CC5">    print</span><span style="color:#24292E">(</span><span style="color:#032F62">"still running:"</span><span style="color:#24292E">, e.request_id)    </span><span style="color:#6A737D"># re-poll later with this id</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#D73A49">except</span><span style="color:#24292E"> InferenceFailed </span><span style="color:#D73A49">as</span><span style="color:#24292E"> e:</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#005CC5">    print</span><span style="color:#24292E">(</span><span style="color:#032F62">"failed:"</span><span style="color:#24292E">, e.detail)</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Fast models (&#x3C;=600s) can use the one-liner instead:</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#6A737D"># result = segmind.run("happyhorse", **payload)</span></span></span></span></code></pre>33:T2152,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#6A737D"># pip install "segmind>=1.1.0"</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#6A737D"># export SEGMIND_API_KEY="YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#F97583">from</span><span style="color:#E1E4E8"> segmind </span><span style="color:#F97583">import</span><span style="color:#E1E4E8"> SegmindClient, InferenceFailed, InferenceTimeout</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Async (v2) â€” recommended for long-running / video models.</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#6A737D"># run() blocks up to 600s; submit_async + job.wait(timeout=...) sets a longer</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#6A737D"># deadline and keeps the request_id so you can re-poll later.</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">client </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> SegmindClient()                      </span><span style="color:#6A737D"># reads SEGMIND_API_KEY</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">payload </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "negative_prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"blurry, low quality, distorted, watermark, text"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "resolution"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"720p"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "duration"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">5</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "aspect_ratio"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"16:9"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "prompt_extend"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">True</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "watermark"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">False</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">job </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> client.submit_async(</span><span style="color:#9ECBFF">"happyhorse"</span><span style="color:#E1E4E8">, </span><span style="color:#F97583">**</span><span style="color:#E1E4E8">payload)</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#79B8FF">print</span><span style="color:#E1E4E8">(job.request_id)                         </span><span style="color:#6A737D"># available immediately</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#F97583">try</span><span style="color:#E1E4E8">:</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    result </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> job.wait(</span><span style="color:#FFAB70">timeout</span><span style="color:#F97583">=</span><span style="color:#79B8FF">900</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">interval</span><span style="color:#F97583">=</span><span style="color:#79B8FF">2.0</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(result[</span><span style="color:#9ECBFF">"status"</span><span style="color:#E1E4E8">])                  </span><span style="color:#6A737D"># COMPLETED</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(result.get(</span><span style="color:#9ECBFF">"output"</span><span style="color:#E1E4E8">))              </span><span style="color:#6A737D"># model output (e.g. video URL)</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#F97583">except</span><span style="color:#E1E4E8"> InferenceTimeout </span><span style="color:#F97583">as</span><span style="color:#E1E4E8"> e:</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"still running:"</span><span style="color:#E1E4E8">, e.request_id)    </span><span style="color:#6A737D"># re-poll later with this id</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#F97583">except</span><span style="color:#E1E4E8"> InferenceFailed </span><span style="color:#F97583">as</span><span style="color:#E1E4E8"> e:</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"failed:"</span><span style="color:#E1E4E8">, e.detail)</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Fast models (&#x3C;=600s) can use the one-liner instead:</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#6A737D"># result = segmind.run("happyhorse", **payload)</span></span></span></span></code></pre>34:T14a9,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#24292E">REQUEST_ID</span><span style="color:#D73A49">=</span><span style="color:#24292E">$(</span><span style="color:#6F42C1">curl</span><span style="color:#005CC5"> -s</span><span style="color:#005CC5"> -X</span><span style="color:#032F62"> POST</span><span style="color:#032F62"> "https://api.segmind.com/v2/happyhorse"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -H</span><span style="color:#032F62"> "x-api-key: YOUR_API_KEY"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -H</span><span style="color:#032F62"> "Content-Type: application/json"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -d</span><span style="color:#032F62"> '{</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">}'</span><span style="color:#D73A49"> |</span><span style="color:#6F42C1"> jq</span><span style="color:#005CC5"> -r</span><span style="color:#032F62"> .request_id</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 2. Poll status until "COMPLETED" (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#6F42C1">curl</span><span style="color:#005CC5"> -s</span><span style="color:#032F62"> "https://api.segmind.com/v2/requests/</span><span style="color:#24292E">$REQUEST_ID</span><span style="color:#032F62">/status"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -H</span><span style="color:#032F62"> "x-api-key: YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#6F42C1">curl</span><span style="color:#005CC5"> -s</span><span style="color:#032F62"> "https://api.segmind.com/v2/requests/</span><span style="color:#24292E">$REQUEST_ID</span><span style="color:#032F62">"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -H</span><span style="color:#032F62"> "x-api-key: YOUR_API_KEY"</span></span></span></span></code></pre>35:T14a8,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">REQUEST_ID</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">$(</span><span style="color:#B392F0">curl</span><span style="color:#79B8FF"> -s</span><span style="color:#79B8FF"> -X</span><span style="color:#9ECBFF"> POST</span><span style="color:#9ECBFF"> "https://api.segmind.com/v2/happyhorse"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "x-api-key: YOUR_API_KEY"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "Content-Type: application/json"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -d</span><span style="color:#9ECBFF"> '{</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}'</span><span style="color:#F97583"> |</span><span style="color:#B392F0"> jq</span><span style="color:#79B8FF"> -r</span><span style="color:#9ECBFF"> .request_id</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 2. Poll status until "COMPLETED" (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#B392F0">curl</span><span style="color:#79B8FF"> -s</span><span style="color:#9ECBFF"> "https://api.segmind.com/v2/requests/</span><span style="color:#E1E4E8">$REQUEST_ID</span><span style="color:#9ECBFF">/status"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "x-api-key: YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#B392F0">curl</span><span style="color:#79B8FF"> -s</span><span style="color:#9ECBFF"> "https://api.segmind.com/v2/requests/</span><span style="color:#E1E4E8">$REQUEST_ID</span><span style="color:#9ECBFF">"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "x-api-key: YOUR_API_KEY"</span></span></span></span></code></pre>36:T55c,const API_KEY = 'YOUR_API_KEY';

// 1. Submit to the v2 async endpoint -> returns a request_id
const submit = await fetch('https://api.segmind.com/v2/happyhorse', {
  method: 'POST',
  headers: {
    'x-api-key': API_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}),
});
const { request_id } = await submit.json();

// 2. Poll status until COMPLETED (FAILED is served as HTTP 422)
let status = 'QUEUED';
while (status === 'QUEUED' || status === 'PROCESSING') {
  await new Promise((r) => setTimeout(r, 1000));
  const res = await fetch('https://api.segmind.com/v2/requests/' + request_id + '/status', {
    headers: { 'x-api-key': API_KEY },
  });
  status = (await res.json()).status;
  console.log(status);
}

// 3. Fetch the final result body (available for 1 hour)
const result = await fetch('https://api.segmind.com/v2/requests/' + request_id, {
  headers: { 'x-api-key': API_KEY },
});
console.log(await result.json());37:T2b57,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">const</span><span style="color:#005CC5"> API_KEY</span><span style="color:#D73A49"> =</span><span style="color:#032F62"> 'YOUR_API_KEY'</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#D73A49">const</span><span style="color:#005CC5"> submit</span><span style="color:#D73A49"> =</span><span style="color:#D73A49"> await</span><span style="color:#6F42C1"> fetch</span><span style="color:#24292E">(</span><span style="color:#032F62">'https://api.segmind.com/v2/happyhorse'</span><span style="color:#24292E">, {</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#24292E">  method: </span><span style="color:#032F62">'POST'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#24292E">  headers: {</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">    'x-api-key'</span><span style="color:#24292E">: </span><span style="color:#005CC5">API_KEY</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#032F62">    'Content-Type'</span><span style="color:#24292E">: </span><span style="color:#032F62">'application/json'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#24292E">  },</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#24292E">  body: </span><span style="color:#005CC5">JSON</span><span style="color:#24292E">.</span><span style="color:#6F42C1">stringify</span><span style="color:#24292E">({</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"blurry, low quality, distorted, watermark, text"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution"</span><span style="color:#24292E">: </span><span style="color:#032F62">"720p"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration"</span><span style="color:#24292E">: </span><span style="color:#005CC5">5</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio"</span><span style="color:#24292E">: </span><span style="color:#032F62">"16:9"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend"</span><span style="color:#24292E">: </span><span style="color:#005CC5">true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark"</span><span style="color:#24292E">: </span><span style="color:#005CC5">false</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#24292E">}),</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#24292E">});</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#D73A49">const</span><span style="color:#24292E"> { </span><span style="color:#005CC5">request_id</span><span style="color:#24292E"> } </span><span style="color:#D73A49">=</span><span style="color:#D73A49"> await</span><span style="color:#24292E"> submit.</span><span style="color:#6F42C1">json</span><span style="color:#24292E">();</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#D73A49">let</span><span style="color:#24292E"> status </span><span style="color:#D73A49">=</span><span style="color:#032F62"> 'QUEUED'</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#D73A49">while</span><span style="color:#24292E"> (status </span><span style="color:#D73A49">===</span><span style="color:#032F62"> 'QUEUED'</span><span style="color:#D73A49"> ||</span><span style="color:#24292E"> status </span><span style="color:#D73A49">===</span><span style="color:#032F62"> 'PROCESSING'</span><span style="color:#24292E">) {</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#D73A49">  await</span><span style="color:#D73A49"> new</span><span style="color:#005CC5"> Promise</span><span style="color:#24292E">((</span><span style="color:#E36209">r</span><span style="color:#24292E">) </span><span style="color:#D73A49">=></span><span style="color:#6F42C1"> setTimeout</span><span style="color:#24292E">(r, </span><span style="color:#005CC5">1000</span><span style="color:#24292E">));</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#D73A49">  const</span><span style="color:#005CC5"> res</span><span style="color:#D73A49"> =</span><span style="color:#D73A49"> await</span><span style="color:#6F42C1"> fetch</span><span style="color:#24292E">(</span><span style="color:#032F62">'https://api.segmind.com/v2/requests/'</span><span style="color:#D73A49"> +</span><span style="color:#24292E"> request_id </span><span style="color:#D73A49">+</span><span style="color:#032F62"> '/status'</span><span style="color:#24292E">, {</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#24292E">    headers: { </span><span style="color:#032F62">'x-api-key'</span><span style="color:#24292E">: </span><span style="color:#005CC5">API_KEY</span><span style="color:#24292E"> },</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#24292E">  });</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#24292E">  status </span><span style="color:#D73A49">=</span><span style="color:#24292E"> (</span><span style="color:#D73A49">await</span><span style="color:#24292E"> res.</span><span style="color:#6F42C1">json</span><span style="color:#24292E">()).status;</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#24292E">  console.</span><span style="color:#6F42C1">log</span><span style="color:#24292E">(status);</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#D73A49">const</span><span style="color:#005CC5"> result</span><span style="color:#D73A49"> =</span><span style="color:#D73A49"> await</span><span style="color:#6F42C1"> fetch</span><span style="color:#24292E">(</span><span style="color:#032F62">'https://api.segmind.com/v2/requests/'</span><span style="color:#D73A49"> +</span><span style="color:#24292E"> request_id, {</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#24292E">  headers: { </span><span style="color:#032F62">'x-api-key'</span><span style="color:#24292E">: </span><span style="color:#005CC5">API_KEY</span><span style="color:#24292E"> },</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#24292E">});</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#24292E">console.</span><span style="color:#6F42C1">log</span><span style="color:#24292E">(</span><span style="color:#D73A49">await</span><span style="color:#24292E"> result.</span><span style="color:#6F42C1">json</span><span style="color:#24292E">());</span></span></span></span></code></pre>38:T2b56,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> API_KEY</span><span style="color:#F97583"> =</span><span style="color:#9ECBFF"> 'YOUR_API_KEY'</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> submit</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#B392F0"> fetch</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'https://api.segmind.com/v2/happyhorse'</span><span style="color:#E1E4E8">, {</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  method: </span><span style="color:#9ECBFF">'POST'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  headers: {</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'x-api-key'</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">API_KEY</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'Content-Type'</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">'application/json'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  },</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  body: </span><span style="color:#79B8FF">JSON</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">stringify</span><span style="color:#E1E4E8">({</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"blurry, low quality, distorted, watermark, text"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"720p"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">5</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"16:9"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">false</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}),</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">});</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#F97583">const</span><span style="color:#E1E4E8"> { </span><span style="color:#79B8FF">request_id</span><span style="color:#E1E4E8"> } </span><span style="color:#F97583">=</span><span style="color:#F97583"> await</span><span style="color:#E1E4E8"> submit.</span><span style="color:#B392F0">json</span><span style="color:#E1E4E8">();</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#F97583">let</span><span style="color:#E1E4E8"> status </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> 'QUEUED'</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#F97583">while</span><span style="color:#E1E4E8"> (status </span><span style="color:#F97583">===</span><span style="color:#9ECBFF"> 'QUEUED'</span><span style="color:#F97583"> ||</span><span style="color:#E1E4E8"> status </span><span style="color:#F97583">===</span><span style="color:#9ECBFF"> 'PROCESSING'</span><span style="color:#E1E4E8">) {</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#F97583">  await</span><span style="color:#F97583"> new</span><span style="color:#79B8FF"> Promise</span><span style="color:#E1E4E8">((</span><span style="color:#FFAB70">r</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">=></span><span style="color:#B392F0"> setTimeout</span><span style="color:#E1E4E8">(r, </span><span style="color:#79B8FF">1000</span><span style="color:#E1E4E8">));</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#F97583">  const</span><span style="color:#79B8FF"> res</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#B392F0"> fetch</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'https://api.segmind.com/v2/requests/'</span><span style="color:#F97583"> +</span><span style="color:#E1E4E8"> request_id </span><span style="color:#F97583">+</span><span style="color:#9ECBFF"> '/status'</span><span style="color:#E1E4E8">, {</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    headers: { </span><span style="color:#9ECBFF">'x-api-key'</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">API_KEY</span><span style="color:#E1E4E8"> },</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  });</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  status </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> (</span><span style="color:#F97583">await</span><span style="color:#E1E4E8"> res.</span><span style="color:#B392F0">json</span><span style="color:#E1E4E8">()).status;</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  console.</span><span style="color:#B392F0">log</span><span style="color:#E1E4E8">(status);</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> result</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#B392F0"> fetch</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'https://api.segmind.com/v2/requests/'</span><span style="color:#F97583"> +</span><span style="color:#E1E4E8"> request_id, {</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  headers: { </span><span style="color:#9ECBFF">'x-api-key'</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">API_KEY</span><span style="color:#E1E4E8"> },</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">});</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">console.</span><span style="color:#B392F0">log</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">await</span><span style="color:#E1E4E8"> result.</span><span style="color:#B392F0">json</span><span style="color:#E1E4E8">());</span></span></span></span></code></pre>39:T856,package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "time"
)

const apiKey = "YOUR_API_KEY"

func main() {
    client := &http.Client{}
    data := []byte(`{
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}`)

    // 1. Submit to the v2 async endpoint -> returns a request_id
    req, _ := http.NewRequest("POST", "https://api.segmind.com/v2/happyhorse", bytes.NewBuffer(data))
    req.Header.Set("x-api-key", apiKey)
    req.Header.Set("Content-Type", "application/json")
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    var submit map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&submit)
    resp.Body.Close()
    requestID, ok := submit["request_id"].(string)
    if !ok {
        panic(fmt.Sprintf("submit failed: %v", submit))
    }

    // 2. Poll status until COMPLETED (FAILED is served as HTTP 422)
    status := "QUEUED"
    for status == "QUEUED" || status == "PROCESSING" {
        time.Sleep(time.Second)
        sReq, _ := http.NewRequest("GET", "https://api.segmind.com/v2/requests/"+requestID+"/status", nil)
        sReq.Header.Set("x-api-key", apiKey)
        sResp, err := client.Do(sReq)
        if err != nil {
            panic(err)
        }
        var s map[string]interface{}
        json.NewDecoder(sResp.Body).Decode(&s)
        sResp.Body.Close()
        status, _ = s["status"].(string)
        fmt.Println(status)
    }

    // 3. Fetch the final result body (available for 1 hour)
    rReq, _ := http.NewRequest("GET", "https://api.segmind.com/v2/requests/"+requestID, nil)
    rReq.Header.Set("x-api-key", apiKey)
    rResp, _ := client.Do(rReq)
    defer rResp.Body.Close()
    body, _ := io.ReadAll(rResp.Body)
    fmt.Println(string(body))
}3a:T48ef,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">package</span><span style="color:#6F42C1"> main</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#D73A49">import</span><span style="color:#24292E"> (</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">bytes</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">encoding/json</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">fmt</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">io</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">net/http</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">time</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#D73A49">const</span><span style="color:#005CC5"> apiKey</span><span style="color:#D73A49"> =</span><span style="color:#032F62"> "YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#D73A49">func</span><span style="color:#6F42C1"> main</span><span style="color:#24292E">() {</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#24292E">    client </span><span style="color:#D73A49">:=</span><span style="color:#D73A49"> &#x26;</span><span style="color:#6F42C1">http</span><span style="color:#24292E">.</span><span style="color:#6F42C1">Client</span><span style="color:#24292E">{}</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#24292E">    data </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> []</span><span style="color:#D73A49">byte</span><span style="color:#24292E">(</span><span style="color:#032F62">`{</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#032F62">}`</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#24292E">    req, _ </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> http.</span><span style="color:#6F42C1">NewRequest</span><span style="color:#24292E">(</span><span style="color:#032F62">"POST"</span><span style="color:#24292E">, </span><span style="color:#032F62">"https://api.segmind.com/v2/happyhorse"</span><span style="color:#24292E">, bytes.</span><span style="color:#6F42C1">NewBuffer</span><span style="color:#24292E">(data))</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#24292E">    req.Header.</span><span style="color:#6F42C1">Set</span><span style="color:#24292E">(</span><span style="color:#032F62">"x-api-key"</span><span style="color:#24292E">, apiKey)</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#24292E">    req.Header.</span><span style="color:#6F42C1">Set</span><span style="color:#24292E">(</span><span style="color:#032F62">"Content-Type"</span><span style="color:#24292E">, </span><span style="color:#032F62">"application/json"</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#24292E">    resp, err </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> client.</span><span style="color:#6F42C1">Do</span><span style="color:#24292E">(req)</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> err </span><span style="color:#D73A49">!=</span><span style="color:#005CC5"> nil</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#6F42C1">        panic</span><span style="color:#24292E">(err)</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#D73A49">    var</span><span style="color:#24292E"> submit </span><span style="color:#D73A49">map</span><span style="color:#24292E">[</span><span style="color:#D73A49">string</span><span style="color:#24292E">]</span><span style="color:#D73A49">interface</span><span style="color:#24292E">{}</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#24292E">    json.</span><span style="color:#6F42C1">NewDecoder</span><span style="color:#24292E">(resp.Body).</span><span style="color:#6F42C1">Decode</span><span style="color:#24292E">(</span><span style="color:#D73A49">&#x26;</span><span style="color:#24292E">submit)</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#24292E">    resp.Body.</span><span style="color:#6F42C1">Close</span><span style="color:#24292E">()</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#24292E">    requestID, ok </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> submit[</span><span style="color:#032F62">"request_id"</span><span style="color:#24292E">].(</span><span style="color:#D73A49">string</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#D73A49"> !</span><span style="color:#24292E">ok {</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#6F42C1">        panic</span><span style="color:#24292E">(fmt.</span><span style="color:#6F42C1">Sprintf</span><span style="color:#24292E">(</span><span style="color:#032F62">"submit failed: </span><span style="color:#005CC5">%v</span><span style="color:#032F62">"</span><span style="color:#24292E">, submit))</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#24292E">    status </span><span style="color:#D73A49">:=</span><span style="color:#032F62"> "QUEUED"</span></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"><span style="color:#D73A49">    for</span><span style="color:#24292E"> status </span><span style="color:#D73A49">==</span><span style="color:#032F62"> "QUEUED"</span><span style="color:#D73A49"> ||</span><span style="color:#24292E"> status </span><span style="color:#D73A49">==</span><span style="color:#032F62"> "PROCESSING"</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">45</span><span class="line-content"><span class="line"><span style="color:#24292E">        time.</span><span style="color:#6F42C1">Sleep</span><span style="color:#24292E">(time.Second)</span></span></span></span>
<span class="line"><span class="line-number">46</span><span class="line-content"><span class="line"><span style="color:#24292E">        sReq, _ </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> http.</span><span style="color:#6F42C1">NewRequest</span><span style="color:#24292E">(</span><span style="color:#032F62">"GET"</span><span style="color:#24292E">, </span><span style="color:#032F62">"https://api.segmind.com/v2/requests/"</span><span style="color:#D73A49">+</span><span style="color:#24292E">requestID</span><span style="color:#D73A49">+</span><span style="color:#032F62">"/status"</span><span style="color:#24292E">, </span><span style="color:#005CC5">nil</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">47</span><span class="line-content"><span class="line"><span style="color:#24292E">        sReq.Header.</span><span style="color:#6F42C1">Set</span><span style="color:#24292E">(</span><span style="color:#032F62">"x-api-key"</span><span style="color:#24292E">, apiKey)</span></span></span></span>
<span class="line"><span class="line-number">48</span><span class="line-content"><span class="line"><span style="color:#24292E">        sResp, err </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> client.</span><span style="color:#6F42C1">Do</span><span style="color:#24292E">(sReq)</span></span></span></span>
<span class="line"><span class="line-number">49</span><span class="line-content"><span class="line"><span style="color:#D73A49">        if</span><span style="color:#24292E"> err </span><span style="color:#D73A49">!=</span><span style="color:#005CC5"> nil</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">50</span><span class="line-content"><span class="line"><span style="color:#6F42C1">            panic</span><span style="color:#24292E">(err)</span></span></span></span>
<span class="line"><span class="line-number">51</span><span class="line-content"><span class="line"><span style="color:#24292E">        }</span></span></span></span>
<span class="line"><span class="line-number">52</span><span class="line-content"><span class="line"><span style="color:#D73A49">        var</span><span style="color:#24292E"> s </span><span style="color:#D73A49">map</span><span style="color:#24292E">[</span><span style="color:#D73A49">string</span><span style="color:#24292E">]</span><span style="color:#D73A49">interface</span><span style="color:#24292E">{}</span></span></span></span>
<span class="line"><span class="line-number">53</span><span class="line-content"><span class="line"><span style="color:#24292E">        json.</span><span style="color:#6F42C1">NewDecoder</span><span style="color:#24292E">(sResp.Body).</span><span style="color:#6F42C1">Decode</span><span style="color:#24292E">(</span><span style="color:#D73A49">&#x26;</span><span style="color:#24292E">s)</span></span></span></span>
<span class="line"><span class="line-number">54</span><span class="line-content"><span class="line"><span style="color:#24292E">        sResp.Body.</span><span style="color:#6F42C1">Close</span><span style="color:#24292E">()</span></span></span></span>
<span class="line"><span class="line-number">55</span><span class="line-content"><span class="line"><span style="color:#24292E">        status, _ </span><span style="color:#D73A49">=</span><span style="color:#24292E"> s[</span><span style="color:#032F62">"status"</span><span style="color:#24292E">].(</span><span style="color:#D73A49">string</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">56</span><span class="line-content"><span class="line"><span style="color:#24292E">        fmt.</span><span style="color:#6F42C1">Println</span><span style="color:#24292E">(status)</span></span></span></span>
<span class="line"><span class="line-number">57</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">58</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">59</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">60</span><span class="line-content"><span class="line"><span style="color:#24292E">    rReq, _ </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> http.</span><span style="color:#6F42C1">NewRequest</span><span style="color:#24292E">(</span><span style="color:#032F62">"GET"</span><span style="color:#24292E">, </span><span style="color:#032F62">"https://api.segmind.com/v2/requests/"</span><span style="color:#D73A49">+</span><span style="color:#24292E">requestID, </span><span style="color:#005CC5">nil</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">61</span><span class="line-content"><span class="line"><span style="color:#24292E">    rReq.Header.</span><span style="color:#6F42C1">Set</span><span style="color:#24292E">(</span><span style="color:#032F62">"x-api-key"</span><span style="color:#24292E">, apiKey)</span></span></span></span>
<span class="line"><span class="line-number">62</span><span class="line-content"><span class="line"><span style="color:#24292E">    rResp, _ </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> client.</span><span style="color:#6F42C1">Do</span><span style="color:#24292E">(rReq)</span></span></span></span>
<span class="line"><span class="line-number">63</span><span class="line-content"><span class="line"><span style="color:#D73A49">    defer</span><span style="color:#24292E"> rResp.Body.</span><span style="color:#6F42C1">Close</span><span style="color:#24292E">()</span></span></span></span>
<span class="line"><span class="line-number">64</span><span class="line-content"><span class="line"><span style="color:#24292E">    body, _ </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> io.</span><span style="color:#6F42C1">ReadAll</span><span style="color:#24292E">(rResp.Body)</span></span></span></span>
<span class="line"><span class="line-number">65</span><span class="line-content"><span class="line"><span style="color:#24292E">    fmt.</span><span style="color:#6F42C1">Println</span><span style="color:#24292E">(</span><span style="color:#D73A49">string</span><span style="color:#24292E">(body))</span></span></span></span>
<span class="line"><span class="line-number">66</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span></code></pre>3b:T48ee,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">package</span><span style="color:#B392F0"> main</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> (</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">bytes</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">encoding/json</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">fmt</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">io</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">net/http</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">time</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> apiKey</span><span style="color:#F97583"> =</span><span style="color:#9ECBFF"> "YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#F97583">func</span><span style="color:#B392F0"> main</span><span style="color:#E1E4E8">() {</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    client </span><span style="color:#F97583">:=</span><span style="color:#F97583"> &#x26;</span><span style="color:#B392F0">http</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">Client</span><span style="color:#E1E4E8">{}</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    data </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> []</span><span style="color:#F97583">byte</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">`{</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}`</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    req, _ </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> http.</span><span style="color:#B392F0">NewRequest</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"POST"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"https://api.segmind.com/v2/happyhorse"</span><span style="color:#E1E4E8">, bytes.</span><span style="color:#B392F0">NewBuffer</span><span style="color:#E1E4E8">(data))</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    req.Header.</span><span style="color:#B392F0">Set</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"x-api-key"</span><span style="color:#E1E4E8">, apiKey)</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    req.Header.</span><span style="color:#B392F0">Set</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"Content-Type"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"application/json"</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    resp, err </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> client.</span><span style="color:#B392F0">Do</span><span style="color:#E1E4E8">(req)</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> err </span><span style="color:#F97583">!=</span><span style="color:#79B8FF"> nil</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#B392F0">        panic</span><span style="color:#E1E4E8">(err)</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#F97583">    var</span><span style="color:#E1E4E8"> submit </span><span style="color:#F97583">map</span><span style="color:#E1E4E8">[</span><span style="color:#F97583">string</span><span style="color:#E1E4E8">]</span><span style="color:#F97583">interface</span><span style="color:#E1E4E8">{}</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    json.</span><span style="color:#B392F0">NewDecoder</span><span style="color:#E1E4E8">(resp.Body).</span><span style="color:#B392F0">Decode</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">&#x26;</span><span style="color:#E1E4E8">submit)</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    resp.Body.</span><span style="color:#B392F0">Close</span><span style="color:#E1E4E8">()</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    requestID, ok </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> submit[</span><span style="color:#9ECBFF">"request_id"</span><span style="color:#E1E4E8">].(</span><span style="color:#F97583">string</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#F97583"> !</span><span style="color:#E1E4E8">ok {</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#B392F0">        panic</span><span style="color:#E1E4E8">(fmt.</span><span style="color:#B392F0">Sprintf</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"submit failed: </span><span style="color:#79B8FF">%v</span><span style="color:#9ECBFF">"</span><span style="color:#E1E4E8">, submit))</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    status </span><span style="color:#F97583">:=</span><span style="color:#9ECBFF"> "QUEUED"</span></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"><span style="color:#F97583">    for</span><span style="color:#E1E4E8"> status </span><span style="color:#F97583">==</span><span style="color:#9ECBFF"> "QUEUED"</span><span style="color:#F97583"> ||</span><span style="color:#E1E4E8"> status </span><span style="color:#F97583">==</span><span style="color:#9ECBFF"> "PROCESSING"</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">45</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        time.</span><span style="color:#B392F0">Sleep</span><span style="color:#E1E4E8">(time.Second)</span></span></span></span>
<span class="line"><span class="line-number">46</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        sReq, _ </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> http.</span><span style="color:#B392F0">NewRequest</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"GET"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"https://api.segmind.com/v2/requests/"</span><span style="color:#F97583">+</span><span style="color:#E1E4E8">requestID</span><span style="color:#F97583">+</span><span style="color:#9ECBFF">"/status"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">nil</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">47</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        sReq.Header.</span><span style="color:#B392F0">Set</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"x-api-key"</span><span style="color:#E1E4E8">, apiKey)</span></span></span></span>
<span class="line"><span class="line-number">48</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        sResp, err </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> client.</span><span style="color:#B392F0">Do</span><span style="color:#E1E4E8">(sReq)</span></span></span></span>
<span class="line"><span class="line-number">49</span><span class="line-content"><span class="line"><span style="color:#F97583">        if</span><span style="color:#E1E4E8"> err </span><span style="color:#F97583">!=</span><span style="color:#79B8FF"> nil</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">50</span><span class="line-content"><span class="line"><span style="color:#B392F0">            panic</span><span style="color:#E1E4E8">(err)</span></span></span></span>
<span class="line"><span class="line-number">51</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        }</span></span></span></span>
<span class="line"><span class="line-number">52</span><span class="line-content"><span class="line"><span style="color:#F97583">        var</span><span style="color:#E1E4E8"> s </span><span style="color:#F97583">map</span><span style="color:#E1E4E8">[</span><span style="color:#F97583">string</span><span style="color:#E1E4E8">]</span><span style="color:#F97583">interface</span><span style="color:#E1E4E8">{}</span></span></span></span>
<span class="line"><span class="line-number">53</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        json.</span><span style="color:#B392F0">NewDecoder</span><span style="color:#E1E4E8">(sResp.Body).</span><span style="color:#B392F0">Decode</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">&#x26;</span><span style="color:#E1E4E8">s)</span></span></span></span>
<span class="line"><span class="line-number">54</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        sResp.Body.</span><span style="color:#B392F0">Close</span><span style="color:#E1E4E8">()</span></span></span></span>
<span class="line"><span class="line-number">55</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        status, _ </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> s[</span><span style="color:#9ECBFF">"status"</span><span style="color:#E1E4E8">].(</span><span style="color:#F97583">string</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">56</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        fmt.</span><span style="color:#B392F0">Println</span><span style="color:#E1E4E8">(status)</span></span></span></span>
<span class="line"><span class="line-number">57</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">58</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">59</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">60</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    rReq, _ </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> http.</span><span style="color:#B392F0">NewRequest</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"GET"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"https://api.segmind.com/v2/requests/"</span><span style="color:#F97583">+</span><span style="color:#E1E4E8">requestID, </span><span style="color:#79B8FF">nil</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">61</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    rReq.Header.</span><span style="color:#B392F0">Set</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"x-api-key"</span><span style="color:#E1E4E8">, apiKey)</span></span></span></span>
<span class="line"><span class="line-number">62</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    rResp, _ </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> client.</span><span style="color:#B392F0">Do</span><span style="color:#E1E4E8">(rReq)</span></span></span></span>
<span class="line"><span class="line-number">63</span><span class="line-content"><span class="line"><span style="color:#F97583">    defer</span><span style="color:#E1E4E8"> rResp.Body.</span><span style="color:#B392F0">Close</span><span style="color:#E1E4E8">()</span></span></span></span>
<span class="line"><span class="line-number">64</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    body, _ </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> io.</span><span style="color:#B392F0">ReadAll</span><span style="color:#E1E4E8">(rResp.Body)</span></span></span></span>
<span class="line"><span class="line-number">65</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    fmt.</span><span style="color:#B392F0">Println</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">string</span><span style="color:#E1E4E8">(body))</span></span></span></span>
<span class="line"><span class="line-number">66</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span></code></pre>3c:T6fe,<?php

$apiKey = 'YOUR_API_KEY';
$headers = [
    'x-api-key: ' . $apiKey,
    'Content-Type: application/json',
];

$data = '{
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}';

// 1. Submit to the v2 async endpoint -> returns a request_id
$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.segmind.com/v2/happyhorse',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $data,
    CURLOPT_HTTPHEADER => $headers,
]);
$submit = json_decode(curl_exec($curl), true);
$requestId = $submit['request_id'] ?? '';
curl_close($curl);

// 2. Poll status until COMPLETED (FAILED is served as HTTP 422)
$status = 'QUEUED';
while ($status === 'QUEUED' || $status === 'PROCESSING') {
    sleep(1);
    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL => 'https://api.segmind.com/v2/requests/' . $requestId . '/status',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => $headers,
    ]);
    $poll = json_decode(curl_exec($curl), true);
    $status = $poll['status'] ?? '';
    curl_close($curl);
    echo $status . "\n";
}

// 3. Fetch the final result body (available for 1 hour)
$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.segmind.com/v2/requests/' . $requestId,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => $headers,
]);
echo curl_exec($curl);
curl_close($curl);

?>3d:T38f8,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">&#x3C;?</span><span style="color:#005CC5">php</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#24292E">$apiKey </span><span style="color:#D73A49">=</span><span style="color:#032F62"> 'YOUR_API_KEY'</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#24292E">$headers </span><span style="color:#D73A49">=</span><span style="color:#24292E"> [</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#032F62">    'x-api-key: '</span><span style="color:#D73A49"> .</span><span style="color:#24292E"> $apiKey,</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">    'Content-Type: application/json'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#24292E">];</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#24292E">$data </span><span style="color:#D73A49">=</span><span style="color:#032F62"> '{</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#032F62">}'</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#24292E">$curl </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> curl_init</span><span style="color:#24292E">();</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#005CC5">curl_setopt_array</span><span style="color:#24292E">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_URL</span><span style="color:#D73A49"> =></span><span style="color:#032F62"> 'https://api.segmind.com/v2/happyhorse'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_RETURNTRANSFER</span><span style="color:#D73A49"> =></span><span style="color:#005CC5"> true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_POST</span><span style="color:#D73A49"> =></span><span style="color:#005CC5"> true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_POSTFIELDS</span><span style="color:#D73A49"> =></span><span style="color:#24292E"> $data,</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_HTTPHEADER</span><span style="color:#D73A49"> =></span><span style="color:#24292E"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#24292E">]);</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#24292E">$submit </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> json_decode</span><span style="color:#24292E">(</span><span style="color:#005CC5">curl_exec</span><span style="color:#24292E">($curl), </span><span style="color:#005CC5">true</span><span style="color:#24292E">);</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#24292E">$requestId </span><span style="color:#D73A49">=</span><span style="color:#24292E"> $submit[</span><span style="color:#032F62">'request_id'</span><span style="color:#24292E">] </span><span style="color:#D73A49">??</span><span style="color:#032F62"> ''</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#005CC5">curl_close</span><span style="color:#24292E">($curl);</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#24292E">$status </span><span style="color:#D73A49">=</span><span style="color:#032F62"> 'QUEUED'</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#D73A49">while</span><span style="color:#24292E"> ($status </span><span style="color:#D73A49">===</span><span style="color:#032F62"> 'QUEUED'</span><span style="color:#D73A49"> ||</span><span style="color:#24292E"> $status </span><span style="color:#D73A49">===</span><span style="color:#032F62"> 'PROCESSING'</span><span style="color:#24292E">) {</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#005CC5">    sleep</span><span style="color:#24292E">(</span><span style="color:#005CC5">1</span><span style="color:#24292E">);</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#24292E">    $curl </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> curl_init</span><span style="color:#24292E">();</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#005CC5">    curl_setopt_array</span><span style="color:#24292E">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#005CC5">        CURLOPT_URL</span><span style="color:#D73A49"> =></span><span style="color:#032F62"> 'https://api.segmind.com/v2/requests/'</span><span style="color:#D73A49"> .</span><span style="color:#24292E"> $requestId </span><span style="color:#D73A49">.</span><span style="color:#032F62"> '/status'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#005CC5">        CURLOPT_RETURNTRANSFER</span><span style="color:#D73A49"> =></span><span style="color:#005CC5"> true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#005CC5">        CURLOPT_HTTPHEADER</span><span style="color:#D73A49"> =></span><span style="color:#24292E"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"><span style="color:#24292E">    ]);</span></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#24292E">    $poll </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> json_decode</span><span style="color:#24292E">(</span><span style="color:#005CC5">curl_exec</span><span style="color:#24292E">($curl), </span><span style="color:#005CC5">true</span><span style="color:#24292E">);</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#24292E">    $status </span><span style="color:#D73A49">=</span><span style="color:#24292E"> $poll[</span><span style="color:#032F62">'status'</span><span style="color:#24292E">] </span><span style="color:#D73A49">??</span><span style="color:#032F62"> ''</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"><span style="color:#005CC5">    curl_close</span><span style="color:#24292E">($curl);</span></span></span></span>
<span class="line"><span class="line-number">45</span><span class="line-content"><span class="line"><span style="color:#005CC5">    echo</span><span style="color:#24292E"> $status </span><span style="color:#D73A49">.</span><span style="color:#032F62"> "</span><span style="color:#005CC5">\n</span><span style="color:#032F62">"</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">46</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span>
<span class="line"><span class="line-number">47</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">48</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">49</span><span class="line-content"><span class="line"><span style="color:#24292E">$curl </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> curl_init</span><span style="color:#24292E">();</span></span></span></span>
<span class="line"><span class="line-number">50</span><span class="line-content"><span class="line"><span style="color:#005CC5">curl_setopt_array</span><span style="color:#24292E">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">51</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_URL</span><span style="color:#D73A49"> =></span><span style="color:#032F62"> 'https://api.segmind.com/v2/requests/'</span><span style="color:#D73A49"> .</span><span style="color:#24292E"> $requestId,</span></span></span></span>
<span class="line"><span class="line-number">52</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_RETURNTRANSFER</span><span style="color:#D73A49"> =></span><span style="color:#005CC5"> true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">53</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_HTTPHEADER</span><span style="color:#D73A49"> =></span><span style="color:#24292E"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">54</span><span class="line-content"><span class="line"><span style="color:#24292E">]);</span></span></span></span>
<span class="line"><span class="line-number">55</span><span class="line-content"><span class="line"><span style="color:#005CC5">echo</span><span style="color:#005CC5"> curl_exec</span><span style="color:#24292E">($curl);</span></span></span></span>
<span class="line"><span class="line-number">56</span><span class="line-content"><span class="line"><span style="color:#005CC5">curl_close</span><span style="color:#24292E">($curl);</span></span></span></span>
<span class="line"><span class="line-number">57</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">58</span><span class="line-content"><span class="line"><span style="color:#D73A49">?></span></span></span></span></code></pre>3e:T38f7,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">&#x3C;?</span><span style="color:#79B8FF">php</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$apiKey </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> 'YOUR_API_KEY'</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$headers </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> [</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'x-api-key: '</span><span style="color:#F97583"> .</span><span style="color:#E1E4E8"> $apiKey,</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'Content-Type: application/json'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">];</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$data </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> '{</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}'</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$curl </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> curl_init</span><span style="color:#E1E4E8">();</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#79B8FF">curl_setopt_array</span><span style="color:#E1E4E8">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_URL</span><span style="color:#F97583"> =></span><span style="color:#9ECBFF"> 'https://api.segmind.com/v2/happyhorse'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_RETURNTRANSFER</span><span style="color:#F97583"> =></span><span style="color:#79B8FF"> true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_POST</span><span style="color:#F97583"> =></span><span style="color:#79B8FF"> true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_POSTFIELDS</span><span style="color:#F97583"> =></span><span style="color:#E1E4E8"> $data,</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_HTTPHEADER</span><span style="color:#F97583"> =></span><span style="color:#E1E4E8"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">]);</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$submit </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> json_decode</span><span style="color:#E1E4E8">(</span><span style="color:#79B8FF">curl_exec</span><span style="color:#E1E4E8">($curl), </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">);</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$requestId </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> $submit[</span><span style="color:#9ECBFF">'request_id'</span><span style="color:#E1E4E8">] </span><span style="color:#F97583">??</span><span style="color:#9ECBFF"> ''</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#79B8FF">curl_close</span><span style="color:#E1E4E8">($curl);</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$status </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> 'QUEUED'</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#F97583">while</span><span style="color:#E1E4E8"> ($status </span><span style="color:#F97583">===</span><span style="color:#9ECBFF"> 'QUEUED'</span><span style="color:#F97583"> ||</span><span style="color:#E1E4E8"> $status </span><span style="color:#F97583">===</span><span style="color:#9ECBFF"> 'PROCESSING'</span><span style="color:#E1E4E8">) {</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    sleep</span><span style="color:#E1E4E8">(</span><span style="color:#79B8FF">1</span><span style="color:#E1E4E8">);</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    $curl </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> curl_init</span><span style="color:#E1E4E8">();</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    curl_setopt_array</span><span style="color:#E1E4E8">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#79B8FF">        CURLOPT_URL</span><span style="color:#F97583"> =></span><span style="color:#9ECBFF"> 'https://api.segmind.com/v2/requests/'</span><span style="color:#F97583"> .</span><span style="color:#E1E4E8"> $requestId </span><span style="color:#F97583">.</span><span style="color:#9ECBFF"> '/status'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#79B8FF">        CURLOPT_RETURNTRANSFER</span><span style="color:#F97583"> =></span><span style="color:#79B8FF"> true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#79B8FF">        CURLOPT_HTTPHEADER</span><span style="color:#F97583"> =></span><span style="color:#E1E4E8"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    ]);</span></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    $poll </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> json_decode</span><span style="color:#E1E4E8">(</span><span style="color:#79B8FF">curl_exec</span><span style="color:#E1E4E8">($curl), </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">);</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    $status </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> $poll[</span><span style="color:#9ECBFF">'status'</span><span style="color:#E1E4E8">] </span><span style="color:#F97583">??</span><span style="color:#9ECBFF"> ''</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    curl_close</span><span style="color:#E1E4E8">($curl);</span></span></span></span>
<span class="line"><span class="line-number">45</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    echo</span><span style="color:#E1E4E8"> $status </span><span style="color:#F97583">.</span><span style="color:#9ECBFF"> "</span><span style="color:#79B8FF">\n</span><span style="color:#9ECBFF">"</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">46</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span>
<span class="line"><span class="line-number">47</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">48</span><span class="line-content"><span class="line"><span style="color:#6A737D">// 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">49</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$curl </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> curl_init</span><span style="color:#E1E4E8">();</span></span></span></span>
<span class="line"><span class="line-number">50</span><span class="line-content"><span class="line"><span style="color:#79B8FF">curl_setopt_array</span><span style="color:#E1E4E8">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">51</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_URL</span><span style="color:#F97583"> =></span><span style="color:#9ECBFF"> 'https://api.segmind.com/v2/requests/'</span><span style="color:#F97583"> .</span><span style="color:#E1E4E8"> $requestId,</span></span></span></span>
<span class="line"><span class="line-number">52</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_RETURNTRANSFER</span><span style="color:#F97583"> =></span><span style="color:#79B8FF"> true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">53</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_HTTPHEADER</span><span style="color:#F97583"> =></span><span style="color:#E1E4E8"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">54</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">]);</span></span></span></span>
<span class="line"><span class="line-number">55</span><span class="line-content"><span class="line"><span style="color:#79B8FF">echo</span><span style="color:#79B8FF"> curl_exec</span><span style="color:#E1E4E8">($curl);</span></span></span></span>
<span class="line"><span class="line-number">56</span><span class="line-content"><span class="line"><span style="color:#79B8FF">curl_close</span><span style="color:#E1E4E8">($curl);</span></span></span></span>
<span class="line"><span class="line-number">57</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">58</span><span class="line-content"><span class="line"><span style="color:#F97583">?></span></span></span></span></code></pre>3f:T593,require 'net/http'
require 'json'
require 'uri'

API_KEY = 'YOUR_API_KEY'

def get_json(url)
  uri = URI(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  req = Net::HTTP::Get.new(uri)
  req['x-api-key'] = API_KEY
  JSON.parse(http.request(req).body)
end

# 1. Submit to the v2 async endpoint -> returns a request_id
uri = URI('https://api.segmind.com/v2/happyhorse')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new(uri)
req['x-api-key'] = API_KEY
req['Content-Type'] = 'application/json'
req.body = '{
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}'
request_id = JSON.parse(http.request(req).body)['request_id']

# 2. Poll status until COMPLETED (FAILED is served as HTTP 422)
status = 'QUEUED'
while ['QUEUED', 'PROCESSING'].include?(status)
  sleep 1
  status = get_json("https://api.segmind.com/v2/requests/#{request_id}/status")['status']
  puts status
end

# 3. Fetch the final result body (available for 1 hour)
puts get_json("https://api.segmind.com/v2/requests/#{request_id}").to_json40:T2fe5,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">require</span><span style="color:#032F62"> 'net/http'</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#D73A49">require</span><span style="color:#032F62"> 'json'</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#D73A49">require</span><span style="color:#032F62"> 'uri'</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#005CC5">API_KEY</span><span style="color:#D73A49"> =</span><span style="color:#032F62"> 'YOUR_API_KEY'</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#D73A49">def</span><span style="color:#6F42C1"> get_json</span><span style="color:#24292E">(url)</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#E36209">  uri</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> URI</span><span style="color:#24292E">(url)</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E36209">  http</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> Net</span><span style="color:#24292E">::</span><span style="color:#005CC5">HTTP</span><span style="color:#24292E">.</span><span style="color:#D73A49">new</span><span style="color:#24292E">(uri.</span><span style="color:#6F42C1">host</span><span style="color:#24292E">, uri.</span><span style="color:#6F42C1">port</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#24292E">  http.</span><span style="color:#6F42C1">use_ssl</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> true</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#E36209">  req</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> Net</span><span style="color:#24292E">::</span><span style="color:#005CC5">HTTP</span><span style="color:#24292E">::</span><span style="color:#005CC5">Get</span><span style="color:#24292E">.</span><span style="color:#D73A49">new</span><span style="color:#24292E">(uri)</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#24292E">  req[</span><span style="color:#032F62">'x-api-key'</span><span style="color:#24292E">] </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> API_KEY</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#005CC5">  JSON</span><span style="color:#24292E">.</span><span style="color:#6F42C1">parse</span><span style="color:#24292E">(http.</span><span style="color:#6F42C1">request</span><span style="color:#24292E">(req).</span><span style="color:#6F42C1">body</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#D73A49">end</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#E36209">uri</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> URI</span><span style="color:#24292E">(</span><span style="color:#032F62">'https://api.segmind.com/v2/happyhorse'</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#E36209">http</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> Net</span><span style="color:#24292E">::</span><span style="color:#005CC5">HTTP</span><span style="color:#24292E">.</span><span style="color:#D73A49">new</span><span style="color:#24292E">(uri.</span><span style="color:#6F42C1">host</span><span style="color:#24292E">, uri.</span><span style="color:#6F42C1">port</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#24292E">http.</span><span style="color:#6F42C1">use_ssl</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> true</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#E36209">req</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> Net</span><span style="color:#24292E">::</span><span style="color:#005CC5">HTTP</span><span style="color:#24292E">::</span><span style="color:#005CC5">Post</span><span style="color:#24292E">.</span><span style="color:#D73A49">new</span><span style="color:#24292E">(uri)</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#24292E">req[</span><span style="color:#032F62">'x-api-key'</span><span style="color:#24292E">] </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> API_KEY</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#24292E">req[</span><span style="color:#032F62">'Content-Type'</span><span style="color:#24292E">] </span><span style="color:#D73A49">=</span><span style="color:#032F62"> 'application/json'</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#24292E">req.</span><span style="color:#6F42C1">body</span><span style="color:#D73A49"> =</span><span style="color:#032F62"> '{</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#032F62">}'</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#E36209">request_id</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> JSON</span><span style="color:#24292E">.</span><span style="color:#6F42C1">parse</span><span style="color:#24292E">(http.</span><span style="color:#6F42C1">request</span><span style="color:#24292E">(req).</span><span style="color:#6F42C1">body</span><span style="color:#24292E">)[</span><span style="color:#032F62">'request_id'</span><span style="color:#24292E">]</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#E36209">status</span><span style="color:#D73A49"> =</span><span style="color:#032F62"> 'QUEUED'</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#D73A49">while</span><span style="color:#24292E"> [</span><span style="color:#032F62">'QUEUED'</span><span style="color:#24292E">, </span><span style="color:#032F62">'PROCESSING'</span><span style="color:#24292E">].</span><span style="color:#6F42C1">include?</span><span style="color:#24292E">(status)</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#005CC5">  sleep</span><span style="color:#005CC5"> 1</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#E36209">  status</span><span style="color:#D73A49"> =</span><span style="color:#6F42C1"> get_json</span><span style="color:#24292E">(</span><span style="color:#032F62">"https://api.segmind.com/v2/requests/</span><span style="color:#032F62">#{request_id}</span><span style="color:#032F62">/status"</span><span style="color:#24292E">)[</span><span style="color:#032F62">'status'</span><span style="color:#24292E">]</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#005CC5">  puts</span><span style="color:#24292E"> status</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#D73A49">end</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#005CC5">puts</span><span style="color:#6F42C1"> get_json</span><span style="color:#24292E">(</span><span style="color:#032F62">"https://api.segmind.com/v2/requests/</span><span style="color:#032F62">#{request_id}</span><span style="color:#032F62">"</span><span style="color:#24292E">).</span><span style="color:#6F42C1">to_json</span></span></span></span></code></pre>41:T2fe4,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">require</span><span style="color:#9ECBFF"> 'net/http'</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#F97583">require</span><span style="color:#9ECBFF"> 'json'</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#F97583">require</span><span style="color:#9ECBFF"> 'uri'</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#79B8FF">API_KEY</span><span style="color:#F97583"> =</span><span style="color:#9ECBFF"> 'YOUR_API_KEY'</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#F97583">def</span><span style="color:#B392F0"> get_json</span><span style="color:#E1E4E8">(url)</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#FFAB70">  uri</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> URI</span><span style="color:#E1E4E8">(url)</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#FFAB70">  http</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> Net</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">HTTP</span><span style="color:#E1E4E8">.</span><span style="color:#F97583">new</span><span style="color:#E1E4E8">(uri.</span><span style="color:#B392F0">host</span><span style="color:#E1E4E8">, uri.</span><span style="color:#B392F0">port</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  http.</span><span style="color:#B392F0">use_ssl</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> true</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#FFAB70">  req</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> Net</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">HTTP</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">Get</span><span style="color:#E1E4E8">.</span><span style="color:#F97583">new</span><span style="color:#E1E4E8">(uri)</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  req[</span><span style="color:#9ECBFF">'x-api-key'</span><span style="color:#E1E4E8">] </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> API_KEY</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  JSON</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">parse</span><span style="color:#E1E4E8">(http.</span><span style="color:#B392F0">request</span><span style="color:#E1E4E8">(req).</span><span style="color:#B392F0">body</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#F97583">end</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 1. Submit to the v2 async endpoint -> returns a request_id</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#FFAB70">uri</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> URI</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'https://api.segmind.com/v2/happyhorse'</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#FFAB70">http</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> Net</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">HTTP</span><span style="color:#E1E4E8">.</span><span style="color:#F97583">new</span><span style="color:#E1E4E8">(uri.</span><span style="color:#B392F0">host</span><span style="color:#E1E4E8">, uri.</span><span style="color:#B392F0">port</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">http.</span><span style="color:#B392F0">use_ssl</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> true</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#FFAB70">req</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> Net</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">HTTP</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">Post</span><span style="color:#E1E4E8">.</span><span style="color:#F97583">new</span><span style="color:#E1E4E8">(uri)</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">req[</span><span style="color:#9ECBFF">'x-api-key'</span><span style="color:#E1E4E8">] </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> API_KEY</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">req[</span><span style="color:#9ECBFF">'Content-Type'</span><span style="color:#E1E4E8">] </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> 'application/json'</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">req.</span><span style="color:#B392F0">body</span><span style="color:#F97583"> =</span><span style="color:#9ECBFF"> '{</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}'</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#FFAB70">request_id</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> JSON</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">parse</span><span style="color:#E1E4E8">(http.</span><span style="color:#B392F0">request</span><span style="color:#E1E4E8">(req).</span><span style="color:#B392F0">body</span><span style="color:#E1E4E8">)[</span><span style="color:#9ECBFF">'request_id'</span><span style="color:#E1E4E8">]</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 2. Poll status until COMPLETED (FAILED is served as HTTP 422)</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#FFAB70">status</span><span style="color:#F97583"> =</span><span style="color:#9ECBFF"> 'QUEUED'</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#F97583">while</span><span style="color:#E1E4E8"> [</span><span style="color:#9ECBFF">'QUEUED'</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">'PROCESSING'</span><span style="color:#E1E4E8">].</span><span style="color:#B392F0">include?</span><span style="color:#E1E4E8">(status)</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  sleep</span><span style="color:#79B8FF"> 1</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#FFAB70">  status</span><span style="color:#F97583"> =</span><span style="color:#B392F0"> get_json</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"https://api.segmind.com/v2/requests/</span><span style="color:#9ECBFF">#{request_id}</span><span style="color:#9ECBFF">/status"</span><span style="color:#E1E4E8">)[</span><span style="color:#9ECBFF">'status'</span><span style="color:#E1E4E8">]</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  puts</span><span style="color:#E1E4E8"> status</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#F97583">end</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#6A737D"># 3. Fetch the final result body (available for 1 hour)</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#79B8FF">puts</span><span style="color:#B392F0"> get_json</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"https://api.segmind.com/v2/requests/</span><span style="color:#9ECBFF">#{request_id}</span><span style="color:#9ECBFF">"</span><span style="color:#E1E4E8">).</span><span style="color:#B392F0">to_json</span></span></span></span></code></pre>42:T1687,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#6A737D"># pip install "segmind>=1.1.0"</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#6A737D"># export SEGMIND_API_KEY="YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#D73A49">import</span><span style="color:#24292E"> segmind</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Sync (v1): one blocking call, returns an httpx.Response.</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#24292E">response </span><span style="color:#D73A49">=</span><span style="color:#24292E"> segmind.run_sync(</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">    "happyhorse"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#E36209">    prompt</span><span style="color:#D73A49">=</span><span style="color:#032F62">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E36209">    negative_prompt</span><span style="color:#D73A49">=</span><span style="color:#032F62">"blurry, low quality, distorted, watermark, text"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#E36209">    resolution</span><span style="color:#D73A49">=</span><span style="color:#032F62">"720p"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#E36209">    duration</span><span style="color:#D73A49">=</span><span style="color:#005CC5">5</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#E36209">    aspect_ratio</span><span style="color:#D73A49">=</span><span style="color:#032F62">"16:9"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#E36209">    prompt_extend</span><span style="color:#D73A49">=</span><span style="color:#005CC5">True</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#E36209">    watermark</span><span style="color:#D73A49">=</span><span style="color:#005CC5">False</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#D73A49">if</span><span style="color:#24292E"> response.headers.get(</span><span style="color:#032F62">"content-type"</span><span style="color:#24292E">, </span><span style="color:#032F62">""</span><span style="color:#24292E">).startswith(</span><span style="color:#032F62">"application/json"</span><span style="color:#24292E">):</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#005CC5">    print</span><span style="color:#24292E">(response.json())</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#D73A49">else</span><span style="color:#24292E">:</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#D73A49">    with</span><span style="color:#005CC5"> open</span><span style="color:#24292E">(</span><span style="color:#032F62">"output.mp4"</span><span style="color:#24292E">, </span><span style="color:#032F62">"wb"</span><span style="color:#24292E">) </span><span style="color:#D73A49">as</span><span style="color:#24292E"> f:</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#24292E">        f.write(response.content)</span></span></span></span></code></pre>43:T1686,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#6A737D"># pip install "segmind>=1.1.0"</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#6A737D"># export SEGMIND_API_KEY="YOUR_API_KEY"</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> segmind</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Sync (v1): one blocking call, returns an httpx.Response.</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">response </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> segmind.run_sync(</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "happyhorse"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#FFAB70">    prompt</span><span style="color:#F97583">=</span><span style="color:#9ECBFF">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#FFAB70">    negative_prompt</span><span style="color:#F97583">=</span><span style="color:#9ECBFF">"blurry, low quality, distorted, watermark, text"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#FFAB70">    resolution</span><span style="color:#F97583">=</span><span style="color:#9ECBFF">"720p"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#FFAB70">    duration</span><span style="color:#F97583">=</span><span style="color:#79B8FF">5</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#FFAB70">    aspect_ratio</span><span style="color:#F97583">=</span><span style="color:#9ECBFF">"16:9"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#FFAB70">    prompt_extend</span><span style="color:#F97583">=</span><span style="color:#79B8FF">True</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#FFAB70">    watermark</span><span style="color:#F97583">=</span><span style="color:#79B8FF">False</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#6A737D"># Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#F97583">if</span><span style="color:#E1E4E8"> response.headers.get(</span><span style="color:#9ECBFF">"content-type"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">""</span><span style="color:#E1E4E8">).startswith(</span><span style="color:#9ECBFF">"application/json"</span><span style="color:#E1E4E8">):</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(response.json())</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#F97583">else</span><span style="color:#E1E4E8">:</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#F97583">    with</span><span style="color:#79B8FF"> open</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"output.mp4"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"wb"</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">as</span><span style="color:#E1E4E8"> f:</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        f.write(response.content)</span></span></span></span></code></pre>44:T459,import requests
import json

url = "https://api.segmind.com/v1/happyhorse"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

data = {
    "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
    "negative_prompt": "blurry, low quality, distorted, watermark, text",
    "resolution": "720p",
    "duration": 5,
    "aspect_ratio": "16:9",
    "prompt_extend": true,
    "watermark": false
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
    # Media models return the file itself; a JSON body carries the result instead.
    if response.headers.get("Content-Type", "").startswith("application/json"):
        print(json.dumps(response.json(), indent=2))
    else:
        with open("output.mp4", "wb") as f:
            f.write(response.content)
        print("Saved output.mp4")
else:
    print(f"Error: {response.status_code}")
    print(response.text)45:T21f3,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">import</span><span style="color:#24292E"> requests</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#D73A49">import</span><span style="color:#24292E"> json</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#24292E">url </span><span style="color:#D73A49">=</span><span style="color:#032F62"> "https://api.segmind.com/v1/happyhorse"</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#24292E">headers </span><span style="color:#D73A49">=</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">    "x-api-key"</span><span style="color:#24292E">: </span><span style="color:#032F62">"YOUR_API_KEY"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">    "Content-Type"</span><span style="color:#24292E">: </span><span style="color:#032F62">"application/json"</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#24292E">data </span><span style="color:#D73A49">=</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">    "prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">    "negative_prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"blurry, low quality, distorted, watermark, text"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">    "resolution"</span><span style="color:#24292E">: </span><span style="color:#032F62">"720p"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#032F62">    "duration"</span><span style="color:#24292E">: </span><span style="color:#005CC5">5</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#032F62">    "aspect_ratio"</span><span style="color:#24292E">: </span><span style="color:#032F62">"16:9"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">    "prompt_extend"</span><span style="color:#24292E">: true,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#032F62">    "watermark"</span><span style="color:#24292E">: false</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#24292E">response </span><span style="color:#D73A49">=</span><span style="color:#24292E"> requests.post(url, </span><span style="color:#E36209">headers</span><span style="color:#D73A49">=</span><span style="color:#24292E">headers, </span><span style="color:#E36209">json</span><span style="color:#D73A49">=</span><span style="color:#24292E">data)</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#D73A49">if</span><span style="color:#24292E"> response.status_code </span><span style="color:#D73A49">==</span><span style="color:#005CC5"> 200</span><span style="color:#24292E">:</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#6A737D">    # Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> response.headers.get(</span><span style="color:#032F62">"Content-Type"</span><span style="color:#24292E">, </span><span style="color:#032F62">""</span><span style="color:#24292E">).startswith(</span><span style="color:#032F62">"application/json"</span><span style="color:#24292E">):</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#005CC5">        print</span><span style="color:#24292E">(json.dumps(response.json(), </span><span style="color:#E36209">indent</span><span style="color:#D73A49">=</span><span style="color:#005CC5">2</span><span style="color:#24292E">))</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#D73A49">    else</span><span style="color:#24292E">:</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#D73A49">        with</span><span style="color:#005CC5"> open</span><span style="color:#24292E">(</span><span style="color:#032F62">"output.mp4"</span><span style="color:#24292E">, </span><span style="color:#032F62">"wb"</span><span style="color:#24292E">) </span><span style="color:#D73A49">as</span><span style="color:#24292E"> f:</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#24292E">            f.write(response.content)</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#005CC5">        print</span><span style="color:#24292E">(</span><span style="color:#032F62">"Saved output.mp4"</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#D73A49">else</span><span style="color:#24292E">:</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#005CC5">    print</span><span style="color:#24292E">(</span><span style="color:#D73A49">f</span><span style="color:#032F62">"Error: </span><span style="color:#005CC5">{</span><span style="color:#24292E">response.status_code</span><span style="color:#005CC5">}</span><span style="color:#032F62">"</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#005CC5">    print</span><span style="color:#24292E">(response.text)</span></span></span></span></code></pre>46:T21f2,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> requests</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> json</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">url </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> "https://api.segmind.com/v1/happyhorse"</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">headers </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "x-api-key"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"YOUR_API_KEY"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "Content-Type"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"application/json"</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">data </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "negative_prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"blurry, low quality, distorted, watermark, text"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "resolution"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"720p"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "duration"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">5</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "aspect_ratio"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"16:9"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "prompt_extend"</span><span style="color:#E1E4E8">: true,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "watermark"</span><span style="color:#E1E4E8">: false</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">response </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> requests.post(url, </span><span style="color:#FFAB70">headers</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">headers, </span><span style="color:#FFAB70">json</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">data)</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#F97583">if</span><span style="color:#E1E4E8"> response.status_code </span><span style="color:#F97583">==</span><span style="color:#79B8FF"> 200</span><span style="color:#E1E4E8">:</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#6A737D">    # Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> response.headers.get(</span><span style="color:#9ECBFF">"Content-Type"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">""</span><span style="color:#E1E4E8">).startswith(</span><span style="color:#9ECBFF">"application/json"</span><span style="color:#E1E4E8">):</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#79B8FF">        print</span><span style="color:#E1E4E8">(json.dumps(response.json(), </span><span style="color:#FFAB70">indent</span><span style="color:#F97583">=</span><span style="color:#79B8FF">2</span><span style="color:#E1E4E8">))</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#F97583">    else</span><span style="color:#E1E4E8">:</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#F97583">        with</span><span style="color:#79B8FF"> open</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"output.mp4"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"wb"</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">as</span><span style="color:#E1E4E8"> f:</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">            f.write(response.content)</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#79B8FF">        print</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"Saved output.mp4"</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#F97583">else</span><span style="color:#E1E4E8">:</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">f</span><span style="color:#9ECBFF">"Error: </span><span style="color:#79B8FF">{</span><span style="color:#E1E4E8">response.status_code</span><span style="color:#79B8FF">}</span><span style="color:#9ECBFF">"</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(response.text)</span></span></span></span></code></pre>47:Tbed,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#6F42C1">curl</span><span style="color:#005CC5"> -X</span><span style="color:#032F62"> POST</span><span style="color:#032F62"> "https://api.segmind.com/v1/happyhorse"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -H</span><span style="color:#032F62"> "x-api-key: YOUR_API_KEY"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -H</span><span style="color:#032F62"> "Content-Type: application/json"</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -d</span><span style="color:#032F62"> '{</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">}'</span><span style="color:#005CC5"> \</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#005CC5">  -o</span><span style="color:#032F62"> output.mp4</span></span></span></span></code></pre>48:Tbec,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#B392F0">curl</span><span style="color:#79B8FF"> -X</span><span style="color:#9ECBFF"> POST</span><span style="color:#9ECBFF"> "https://api.segmind.com/v1/happyhorse"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "x-api-key: YOUR_API_KEY"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "Content-Type: application/json"</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -d</span><span style="color:#9ECBFF"> '{</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}'</span><span style="color:#79B8FF"> \</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  -o</span><span style="color:#9ECBFF"> output.mp4</span></span></span></span></code></pre>49:T46a,import { writeFile } from 'node:fs/promises';

const response = await fetch('https://api.segmind.com/v1/happyhorse', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}),
});

if (response.ok) {
  // Media models return the file itself; a JSON body carries the result instead.
  if ((response.headers.get('content-type') || '').startsWith('application/json')) {
    console.log(await response.json());
  } else {
    await writeFile('output.mp4', Buffer.from(await response.arrayBuffer()));
    console.log('Saved output.mp4');
  }
} else {
  console.error('Error:', response.status);
  console.error(await response.text());
}4a:T2398,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">import</span><span style="color:#24292E"> { writeFile } </span><span style="color:#D73A49">from</span><span style="color:#032F62"> 'node:fs/promises'</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#D73A49">const</span><span style="color:#005CC5"> response</span><span style="color:#D73A49"> =</span><span style="color:#D73A49"> await</span><span style="color:#6F42C1"> fetch</span><span style="color:#24292E">(</span><span style="color:#032F62">'https://api.segmind.com/v1/happyhorse'</span><span style="color:#24292E">, {</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#24292E">  method: </span><span style="color:#032F62">'POST'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#24292E">  headers: {</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">    'x-api-key'</span><span style="color:#24292E">: </span><span style="color:#032F62">'YOUR_API_KEY'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">    'Content-Type'</span><span style="color:#24292E">: </span><span style="color:#032F62">'application/json'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#24292E">  },</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#24292E">  body: </span><span style="color:#005CC5">JSON</span><span style="color:#24292E">.</span><span style="color:#6F42C1">stringify</span><span style="color:#24292E">({</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt"</span><span style="color:#24292E">: </span><span style="color:#032F62">"blurry, low quality, distorted, watermark, text"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution"</span><span style="color:#24292E">: </span><span style="color:#032F62">"720p"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration"</span><span style="color:#24292E">: </span><span style="color:#005CC5">5</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio"</span><span style="color:#24292E">: </span><span style="color:#032F62">"16:9"</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend"</span><span style="color:#24292E">: </span><span style="color:#005CC5">true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark"</span><span style="color:#24292E">: </span><span style="color:#005CC5">false</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#24292E">}),</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#24292E">});</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#D73A49">if</span><span style="color:#24292E"> (response.ok) {</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#6A737D">  // Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#D73A49">  if</span><span style="color:#24292E"> ((response.headers.</span><span style="color:#6F42C1">get</span><span style="color:#24292E">(</span><span style="color:#032F62">'content-type'</span><span style="color:#24292E">) </span><span style="color:#D73A49">||</span><span style="color:#032F62"> ''</span><span style="color:#24292E">).</span><span style="color:#6F42C1">startsWith</span><span style="color:#24292E">(</span><span style="color:#032F62">'application/json'</span><span style="color:#24292E">)) {</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#24292E">    console.</span><span style="color:#6F42C1">log</span><span style="color:#24292E">(</span><span style="color:#D73A49">await</span><span style="color:#24292E"> response.</span><span style="color:#6F42C1">json</span><span style="color:#24292E">());</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#24292E">  } </span><span style="color:#D73A49">else</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#D73A49">    await</span><span style="color:#6F42C1"> writeFile</span><span style="color:#24292E">(</span><span style="color:#032F62">'output.mp4'</span><span style="color:#24292E">, Buffer.</span><span style="color:#6F42C1">from</span><span style="color:#24292E">(</span><span style="color:#D73A49">await</span><span style="color:#24292E"> response.</span><span style="color:#6F42C1">arrayBuffer</span><span style="color:#24292E">()));</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#24292E">    console.</span><span style="color:#6F42C1">log</span><span style="color:#24292E">(</span><span style="color:#032F62">'Saved output.mp4'</span><span style="color:#24292E">);</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#24292E">  }</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#24292E">} </span><span style="color:#D73A49">else</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#24292E">  console.</span><span style="color:#6F42C1">error</span><span style="color:#24292E">(</span><span style="color:#032F62">'Error:'</span><span style="color:#24292E">, response.status);</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#24292E">  console.</span><span style="color:#6F42C1">error</span><span style="color:#24292E">(</span><span style="color:#D73A49">await</span><span style="color:#24292E"> response.</span><span style="color:#6F42C1">text</span><span style="color:#24292E">());</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span></code></pre>4b:T2397,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { writeFile } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> 'node:fs/promises'</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> response</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#B392F0"> fetch</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'https://api.segmind.com/v1/happyhorse'</span><span style="color:#E1E4E8">, {</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  method: </span><span style="color:#9ECBFF">'POST'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  headers: {</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'x-api-key'</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">'YOUR_API_KEY'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'Content-Type'</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">'application/json'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  },</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  body: </span><span style="color:#79B8FF">JSON</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">stringify</span><span style="color:#E1E4E8">({</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"blurry, low quality, distorted, watermark, text"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"720p"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">5</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"16:9"</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">false</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}),</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">});</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#F97583">if</span><span style="color:#E1E4E8"> (response.ok) {</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#6A737D">  // Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#F97583">  if</span><span style="color:#E1E4E8"> ((response.headers.</span><span style="color:#B392F0">get</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'content-type'</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">||</span><span style="color:#9ECBFF"> ''</span><span style="color:#E1E4E8">).</span><span style="color:#B392F0">startsWith</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'application/json'</span><span style="color:#E1E4E8">)) {</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    console.</span><span style="color:#B392F0">log</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">await</span><span style="color:#E1E4E8"> response.</span><span style="color:#B392F0">json</span><span style="color:#E1E4E8">());</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  } </span><span style="color:#F97583">else</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#F97583">    await</span><span style="color:#B392F0"> writeFile</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'output.mp4'</span><span style="color:#E1E4E8">, Buffer.</span><span style="color:#B392F0">from</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">await</span><span style="color:#E1E4E8"> response.</span><span style="color:#B392F0">arrayBuffer</span><span style="color:#E1E4E8">()));</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    console.</span><span style="color:#B392F0">log</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'Saved output.mp4'</span><span style="color:#E1E4E8">);</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  }</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">} </span><span style="color:#F97583">else</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  console.</span><span style="color:#B392F0">error</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'Error:'</span><span style="color:#E1E4E8">, response.status);</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">  console.</span><span style="color:#B392F0">error</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">await</span><span style="color:#E1E4E8"> response.</span><span style="color:#B392F0">text</span><span style="color:#E1E4E8">());</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span></code></pre>4c:T5ef,package main

import (
    "bytes"
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
)

func main() {
    url := "https://api.segmind.com/v1/happyhorse"

    data := []byte(`{
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}`)

    req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
    if err != nil {
        panic(err)
    }

    req.Header.Set("x-api-key", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    if resp.StatusCode != http.StatusOK {
        fmt.Printf("Error: %d\n%s\n", resp.StatusCode, body)
        return
    }

    // Media models return the file itself; a JSON body carries the result instead.
    if strings.HasPrefix(resp.Header.Get("Content-Type"), "application/json") {
        fmt.Println(string(body))
        return
    }

    if err := os.WriteFile("output.mp4", body, 0o644); err != nil {
        panic(err)
    }
    fmt.Println("Saved output.mp4")
}4d:T3944,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">package</span><span style="color:#6F42C1"> main</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#D73A49">import</span><span style="color:#24292E"> (</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">bytes</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">fmt</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">io</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">net/http</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">os</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#032F62">    "</span><span style="color:#6F42C1">strings</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#D73A49">func</span><span style="color:#6F42C1"> main</span><span style="color:#24292E">() {</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#24292E">    url </span><span style="color:#D73A49">:=</span><span style="color:#032F62"> "https://api.segmind.com/v1/happyhorse"</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#24292E">    data </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> []</span><span style="color:#D73A49">byte</span><span style="color:#24292E">(</span><span style="color:#032F62">`{</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#032F62">}`</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#24292E">    req, err </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> http.</span><span style="color:#6F42C1">NewRequest</span><span style="color:#24292E">(</span><span style="color:#032F62">"POST"</span><span style="color:#24292E">, url, bytes.</span><span style="color:#6F42C1">NewBuffer</span><span style="color:#24292E">(data))</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> err </span><span style="color:#D73A49">!=</span><span style="color:#005CC5"> nil</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#6F42C1">        panic</span><span style="color:#24292E">(err)</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#24292E">    req.Header.</span><span style="color:#6F42C1">Set</span><span style="color:#24292E">(</span><span style="color:#032F62">"x-api-key"</span><span style="color:#24292E">, </span><span style="color:#032F62">"YOUR_API_KEY"</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#24292E">    req.Header.</span><span style="color:#6F42C1">Set</span><span style="color:#24292E">(</span><span style="color:#032F62">"Content-Type"</span><span style="color:#24292E">, </span><span style="color:#032F62">"application/json"</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#24292E">    client </span><span style="color:#D73A49">:=</span><span style="color:#D73A49"> &#x26;</span><span style="color:#6F42C1">http</span><span style="color:#24292E">.</span><span style="color:#6F42C1">Client</span><span style="color:#24292E">{}</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#24292E">    resp, err </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> client.</span><span style="color:#6F42C1">Do</span><span style="color:#24292E">(req)</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> err </span><span style="color:#D73A49">!=</span><span style="color:#005CC5"> nil</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#6F42C1">        panic</span><span style="color:#24292E">(err)</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#D73A49">    defer</span><span style="color:#24292E"> resp.Body.</span><span style="color:#6F42C1">Close</span><span style="color:#24292E">()</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#24292E">    body, err </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> io.</span><span style="color:#6F42C1">ReadAll</span><span style="color:#24292E">(resp.Body)</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> err </span><span style="color:#D73A49">!=</span><span style="color:#005CC5"> nil</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#6F42C1">        panic</span><span style="color:#24292E">(err)</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">45</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> resp.StatusCode </span><span style="color:#D73A49">!=</span><span style="color:#24292E"> http.StatusOK {</span></span></span></span>
<span class="line"><span class="line-number">46</span><span class="line-content"><span class="line"><span style="color:#24292E">        fmt.</span><span style="color:#6F42C1">Printf</span><span style="color:#24292E">(</span><span style="color:#032F62">"Error: </span><span style="color:#005CC5">%d\n%s\n</span><span style="color:#032F62">"</span><span style="color:#24292E">, resp.StatusCode, body)</span></span></span></span>
<span class="line"><span class="line-number">47</span><span class="line-content"><span class="line"><span style="color:#D73A49">        return</span></span></span></span>
<span class="line"><span class="line-number">48</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">49</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">50</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">51</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> strings.</span><span style="color:#6F42C1">HasPrefix</span><span style="color:#24292E">(resp.Header.</span><span style="color:#6F42C1">Get</span><span style="color:#24292E">(</span><span style="color:#032F62">"Content-Type"</span><span style="color:#24292E">), </span><span style="color:#032F62">"application/json"</span><span style="color:#24292E">) {</span></span></span></span>
<span class="line"><span class="line-number">52</span><span class="line-content"><span class="line"><span style="color:#24292E">        fmt.</span><span style="color:#6F42C1">Println</span><span style="color:#24292E">(</span><span style="color:#D73A49">string</span><span style="color:#24292E">(body))</span></span></span></span>
<span class="line"><span class="line-number">53</span><span class="line-content"><span class="line"><span style="color:#D73A49">        return</span></span></span></span>
<span class="line"><span class="line-number">54</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">55</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">56</span><span class="line-content"><span class="line"><span style="color:#D73A49">    if</span><span style="color:#24292E"> err </span><span style="color:#D73A49">:=</span><span style="color:#24292E"> os.</span><span style="color:#6F42C1">WriteFile</span><span style="color:#24292E">(</span><span style="color:#032F62">"output.mp4"</span><span style="color:#24292E">, body, </span><span style="color:#D73A49">0o</span><span style="color:#005CC5">644</span><span style="color:#24292E">); err </span><span style="color:#D73A49">!=</span><span style="color:#005CC5"> nil</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">57</span><span class="line-content"><span class="line"><span style="color:#6F42C1">        panic</span><span style="color:#24292E">(err)</span></span></span></span>
<span class="line"><span class="line-number">58</span><span class="line-content"><span class="line"><span style="color:#24292E">    }</span></span></span></span>
<span class="line"><span class="line-number">59</span><span class="line-content"><span class="line"><span style="color:#24292E">    fmt.</span><span style="color:#6F42C1">Println</span><span style="color:#24292E">(</span><span style="color:#032F62">"Saved output.mp4"</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">60</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span></code></pre>4e:T3943,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">package</span><span style="color:#B392F0"> main</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> (</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">bytes</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">fmt</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">io</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">net/http</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">os</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    "</span><span style="color:#B392F0">strings</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#F97583">func</span><span style="color:#B392F0"> main</span><span style="color:#E1E4E8">() {</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    url </span><span style="color:#F97583">:=</span><span style="color:#9ECBFF"> "https://api.segmind.com/v1/happyhorse"</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    data </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> []</span><span style="color:#F97583">byte</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">`{</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}`</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    req, err </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> http.</span><span style="color:#B392F0">NewRequest</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"POST"</span><span style="color:#E1E4E8">, url, bytes.</span><span style="color:#B392F0">NewBuffer</span><span style="color:#E1E4E8">(data))</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> err </span><span style="color:#F97583">!=</span><span style="color:#79B8FF"> nil</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#B392F0">        panic</span><span style="color:#E1E4E8">(err)</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    req.Header.</span><span style="color:#B392F0">Set</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"x-api-key"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"YOUR_API_KEY"</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    req.Header.</span><span style="color:#B392F0">Set</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"Content-Type"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"application/json"</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    client </span><span style="color:#F97583">:=</span><span style="color:#F97583"> &#x26;</span><span style="color:#B392F0">http</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">Client</span><span style="color:#E1E4E8">{}</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    resp, err </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> client.</span><span style="color:#B392F0">Do</span><span style="color:#E1E4E8">(req)</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> err </span><span style="color:#F97583">!=</span><span style="color:#79B8FF"> nil</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#B392F0">        panic</span><span style="color:#E1E4E8">(err)</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#F97583">    defer</span><span style="color:#E1E4E8"> resp.Body.</span><span style="color:#B392F0">Close</span><span style="color:#E1E4E8">()</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    body, err </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> io.</span><span style="color:#B392F0">ReadAll</span><span style="color:#E1E4E8">(resp.Body)</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> err </span><span style="color:#F97583">!=</span><span style="color:#79B8FF"> nil</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#B392F0">        panic</span><span style="color:#E1E4E8">(err)</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">45</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> resp.StatusCode </span><span style="color:#F97583">!=</span><span style="color:#E1E4E8"> http.StatusOK {</span></span></span></span>
<span class="line"><span class="line-number">46</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        fmt.</span><span style="color:#B392F0">Printf</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"Error: </span><span style="color:#79B8FF">%d\n%s\n</span><span style="color:#9ECBFF">"</span><span style="color:#E1E4E8">, resp.StatusCode, body)</span></span></span></span>
<span class="line"><span class="line-number">47</span><span class="line-content"><span class="line"><span style="color:#F97583">        return</span></span></span></span>
<span class="line"><span class="line-number">48</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">49</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">50</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">51</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> strings.</span><span style="color:#B392F0">HasPrefix</span><span style="color:#E1E4E8">(resp.Header.</span><span style="color:#B392F0">Get</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"Content-Type"</span><span style="color:#E1E4E8">), </span><span style="color:#9ECBFF">"application/json"</span><span style="color:#E1E4E8">) {</span></span></span></span>
<span class="line"><span class="line-number">52</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">        fmt.</span><span style="color:#B392F0">Println</span><span style="color:#E1E4E8">(</span><span style="color:#F97583">string</span><span style="color:#E1E4E8">(body))</span></span></span></span>
<span class="line"><span class="line-number">53</span><span class="line-content"><span class="line"><span style="color:#F97583">        return</span></span></span></span>
<span class="line"><span class="line-number">54</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">55</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">56</span><span class="line-content"><span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> err </span><span style="color:#F97583">:=</span><span style="color:#E1E4E8"> os.</span><span style="color:#B392F0">WriteFile</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"output.mp4"</span><span style="color:#E1E4E8">, body, </span><span style="color:#F97583">0o</span><span style="color:#79B8FF">644</span><span style="color:#E1E4E8">); err </span><span style="color:#F97583">!=</span><span style="color:#79B8FF"> nil</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">57</span><span class="line-content"><span class="line"><span style="color:#B392F0">        panic</span><span style="color:#E1E4E8">(err)</span></span></span></span>
<span class="line"><span class="line-number">58</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    }</span></span></span></span>
<span class="line"><span class="line-number">59</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">    fmt.</span><span style="color:#B392F0">Println</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"Saved output.mp4"</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">60</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span></code></pre>4f:T553,<?php

$url = "https://api.segmind.com/v1/happyhorse";
$headers = [
    'x-api-key: YOUR_API_KEY',
    'Content-Type: application/json',
];

$data = '{
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}';

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $data,
    CURLOPT_HTTPHEADER => $headers,
]);

$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$contentType = (string) curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
curl_close($curl);

if ($httpCode === 200 && str_starts_with($contentType, 'application/json')) {
    // Media models return the file itself; a JSON body carries the result instead.
    echo json_encode(json_decode($response, true), JSON_PRETTY_PRINT);
} elseif ($httpCode === 200) {
    file_put_contents('output.mp4', $response);
    echo "Saved output.mp4\n";
} else {
    echo "Error: $httpCode\n";
    echo $response;
}

?>50:T2a92,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">&#x3C;?</span><span style="color:#005CC5">php</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#24292E">$url </span><span style="color:#D73A49">=</span><span style="color:#032F62"> "https://api.segmind.com/v1/happyhorse"</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#24292E">$headers </span><span style="color:#D73A49">=</span><span style="color:#24292E"> [</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#032F62">    'x-api-key: YOUR_API_KEY'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#032F62">    'Content-Type: application/json'</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#24292E">];</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#24292E">$data </span><span style="color:#D73A49">=</span><span style="color:#032F62"> '{</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#032F62">}'</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#24292E">$curl </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> curl_init</span><span style="color:#24292E">();</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#005CC5">curl_setopt_array</span><span style="color:#24292E">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_URL</span><span style="color:#D73A49"> =></span><span style="color:#24292E"> $url,</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_RETURNTRANSFER</span><span style="color:#D73A49"> =></span><span style="color:#005CC5"> true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_POST</span><span style="color:#D73A49"> =></span><span style="color:#005CC5"> true</span><span style="color:#24292E">,</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_POSTFIELDS</span><span style="color:#D73A49"> =></span><span style="color:#24292E"> $data,</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#005CC5">    CURLOPT_HTTPHEADER</span><span style="color:#D73A49"> =></span><span style="color:#24292E"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#24292E">]);</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#24292E">$response </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> curl_exec</span><span style="color:#24292E">($curl);</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#24292E">$httpCode </span><span style="color:#D73A49">=</span><span style="color:#005CC5"> curl_getinfo</span><span style="color:#24292E">($curl, </span><span style="color:#005CC5">CURLINFO_HTTP_CODE</span><span style="color:#24292E">);</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#24292E">$contentType </span><span style="color:#D73A49">=</span><span style="color:#24292E"> (</span><span style="color:#D73A49">string</span><span style="color:#24292E">) </span><span style="color:#005CC5">curl_getinfo</span><span style="color:#24292E">($curl, </span><span style="color:#005CC5">CURLINFO_CONTENT_TYPE</span><span style="color:#24292E">);</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#005CC5">curl_close</span><span style="color:#24292E">($curl);</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#D73A49">if</span><span style="color:#24292E"> ($httpCode </span><span style="color:#D73A49">===</span><span style="color:#005CC5"> 200</span><span style="color:#D73A49"> &#x26;&#x26;</span><span style="color:#005CC5"> str_starts_with</span><span style="color:#24292E">($contentType, </span><span style="color:#032F62">'application/json'</span><span style="color:#24292E">)) {</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#005CC5">    echo</span><span style="color:#005CC5"> json_encode</span><span style="color:#24292E">(</span><span style="color:#005CC5">json_decode</span><span style="color:#24292E">($response, </span><span style="color:#005CC5">true</span><span style="color:#24292E">), </span><span style="color:#005CC5">JSON_PRETTY_PRINT</span><span style="color:#24292E">);</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#24292E">} </span><span style="color:#D73A49">elseif</span><span style="color:#24292E"> ($httpCode </span><span style="color:#D73A49">===</span><span style="color:#005CC5"> 200</span><span style="color:#24292E">) {</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#005CC5">    file_put_contents</span><span style="color:#24292E">(</span><span style="color:#032F62">'output.mp4'</span><span style="color:#24292E">, $response);</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#005CC5">    echo</span><span style="color:#032F62"> "Saved output.mp4</span><span style="color:#005CC5">\n</span><span style="color:#032F62">"</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#24292E">} </span><span style="color:#D73A49">else</span><span style="color:#24292E"> {</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#005CC5">    echo</span><span style="color:#032F62"> "Error: </span><span style="color:#24292E">$httpCode</span><span style="color:#005CC5">\n</span><span style="color:#032F62">"</span><span style="color:#24292E">;</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"><span style="color:#005CC5">    echo</span><span style="color:#24292E"> $response;</span></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#24292E">}</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"><span style="color:#D73A49">?></span></span></span></span></code></pre>51:T2a91,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">&#x3C;?</span><span style="color:#79B8FF">php</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$url </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> "https://api.segmind.com/v1/happyhorse"</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$headers </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> [</span></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'x-api-key: YOUR_API_KEY'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">    'Content-Type: application/json'</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">];</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$data </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> '{</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}'</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$curl </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> curl_init</span><span style="color:#E1E4E8">();</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#79B8FF">curl_setopt_array</span><span style="color:#E1E4E8">($curl, [</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_URL</span><span style="color:#F97583"> =></span><span style="color:#E1E4E8"> $url,</span></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_RETURNTRANSFER</span><span style="color:#F97583"> =></span><span style="color:#79B8FF"> true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_POST</span><span style="color:#F97583"> =></span><span style="color:#79B8FF"> true</span><span style="color:#E1E4E8">,</span></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_POSTFIELDS</span><span style="color:#F97583"> =></span><span style="color:#E1E4E8"> $data,</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    CURLOPT_HTTPHEADER</span><span style="color:#F97583"> =></span><span style="color:#E1E4E8"> $headers,</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">]);</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$response </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> curl_exec</span><span style="color:#E1E4E8">($curl);</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$httpCode </span><span style="color:#F97583">=</span><span style="color:#79B8FF"> curl_getinfo</span><span style="color:#E1E4E8">($curl, </span><span style="color:#79B8FF">CURLINFO_HTTP_CODE</span><span style="color:#E1E4E8">);</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">$contentType </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> (</span><span style="color:#F97583">string</span><span style="color:#E1E4E8">) </span><span style="color:#79B8FF">curl_getinfo</span><span style="color:#E1E4E8">($curl, </span><span style="color:#79B8FF">CURLINFO_CONTENT_TYPE</span><span style="color:#E1E4E8">);</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#79B8FF">curl_close</span><span style="color:#E1E4E8">($curl);</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#F97583">if</span><span style="color:#E1E4E8"> ($httpCode </span><span style="color:#F97583">===</span><span style="color:#79B8FF"> 200</span><span style="color:#F97583"> &#x26;&#x26;</span><span style="color:#79B8FF"> str_starts_with</span><span style="color:#E1E4E8">($contentType, </span><span style="color:#9ECBFF">'application/json'</span><span style="color:#E1E4E8">)) {</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#6A737D">    // Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    echo</span><span style="color:#79B8FF"> json_encode</span><span style="color:#E1E4E8">(</span><span style="color:#79B8FF">json_decode</span><span style="color:#E1E4E8">($response, </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">), </span><span style="color:#79B8FF">JSON_PRETTY_PRINT</span><span style="color:#E1E4E8">);</span></span></span></span>
<span class="line"><span class="line-number">36</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">} </span><span style="color:#F97583">elseif</span><span style="color:#E1E4E8"> ($httpCode </span><span style="color:#F97583">===</span><span style="color:#79B8FF"> 200</span><span style="color:#E1E4E8">) {</span></span></span></span>
<span class="line"><span class="line-number">37</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    file_put_contents</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'output.mp4'</span><span style="color:#E1E4E8">, $response);</span></span></span></span>
<span class="line"><span class="line-number">38</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    echo</span><span style="color:#9ECBFF"> "Saved output.mp4</span><span style="color:#79B8FF">\n</span><span style="color:#9ECBFF">"</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">39</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">} </span><span style="color:#F97583">else</span><span style="color:#E1E4E8"> {</span></span></span></span>
<span class="line"><span class="line-number">40</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    echo</span><span style="color:#9ECBFF"> "Error: </span><span style="color:#E1E4E8">$httpCode</span><span style="color:#79B8FF">\n</span><span style="color:#9ECBFF">"</span><span style="color:#E1E4E8">;</span></span></span></span>
<span class="line"><span class="line-number">41</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    echo</span><span style="color:#E1E4E8"> $response;</span></span></span></span>
<span class="line"><span class="line-number">42</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">}</span></span></span></span>
<span class="line"><span class="line-number">43</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">44</span><span class="line-content"><span class="line"><span style="color:#F97583">?></span></span></span></span></code></pre>52:T46f,require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.segmind.com/v1/happyhorse')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request['x-api-key'] = 'YOUR_API_KEY'
request['Content-Type'] = 'application/json'
request.body = '{
  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",
  "negative_prompt": "blurry, low quality, distorted, watermark, text",
  "resolution": "720p",
  "duration": 5,
  "aspect_ratio": "16:9",
  "prompt_extend": true,
  "watermark": false
}'

response = http.request(request)

if response.code == '200'
  # Media models return the file itself; a JSON body carries the result instead.
  if response['content-type'].to_s.start_with?('application/json')
    puts JSON.pretty_generate(JSON.parse(response.body))
  else
    File.binwrite('output.mp4', response.body)
    puts 'Saved output.mp4'
  end
else
  puts "Error: #{response.code}"
  puts response.body
end53:T24f5,<pre class="shiki-light" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#D73A49">require</span><span style="color:#032F62"> 'net/http'</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#D73A49">require</span><span style="color:#032F62"> 'json'</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#D73A49">require</span><span style="color:#032F62"> 'uri'</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#E36209">uri</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> URI</span><span style="color:#24292E">(</span><span style="color:#032F62">'https://api.segmind.com/v1/happyhorse'</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#E36209">http</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> Net</span><span style="color:#24292E">::</span><span style="color:#005CC5">HTTP</span><span style="color:#24292E">.</span><span style="color:#D73A49">new</span><span style="color:#24292E">(uri.</span><span style="color:#6F42C1">host</span><span style="color:#24292E">, uri.</span><span style="color:#6F42C1">port</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#24292E">http.</span><span style="color:#6F42C1">use_ssl</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> true</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#E36209">request</span><span style="color:#D73A49"> =</span><span style="color:#005CC5"> Net</span><span style="color:#24292E">::</span><span style="color:#005CC5">HTTP</span><span style="color:#24292E">::</span><span style="color:#005CC5">Post</span><span style="color:#24292E">.</span><span style="color:#D73A49">new</span><span style="color:#24292E">(uri)</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#24292E">request[</span><span style="color:#032F62">'x-api-key'</span><span style="color:#24292E">] </span><span style="color:#D73A49">=</span><span style="color:#032F62"> 'YOUR_API_KEY'</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#24292E">request[</span><span style="color:#032F62">'Content-Type'</span><span style="color:#24292E">] </span><span style="color:#D73A49">=</span><span style="color:#032F62"> 'application/json'</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#24292E">request.</span><span style="color:#6F42C1">body</span><span style="color:#D73A49"> =</span><span style="color:#032F62"> '{</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#032F62">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#032F62">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#032F62">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#032F62">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#032F62">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#032F62">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#032F62">}'</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#E36209">response</span><span style="color:#D73A49"> =</span><span style="color:#24292E"> http.</span><span style="color:#6F42C1">request</span><span style="color:#24292E">(request)</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#D73A49">if</span><span style="color:#24292E"> response.</span><span style="color:#6F42C1">code</span><span style="color:#D73A49"> ==</span><span style="color:#032F62"> '200'</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#6A737D">  # Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#D73A49">  if</span><span style="color:#24292E"> response[</span><span style="color:#032F62">'content-type'</span><span style="color:#24292E">].</span><span style="color:#6F42C1">to_s</span><span style="color:#24292E">.</span><span style="color:#6F42C1">start_with?</span><span style="color:#24292E">(</span><span style="color:#032F62">'application/json'</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#005CC5">    puts</span><span style="color:#005CC5"> JSON</span><span style="color:#24292E">.</span><span style="color:#6F42C1">pretty_generate</span><span style="color:#24292E">(</span><span style="color:#005CC5">JSON</span><span style="color:#24292E">.</span><span style="color:#6F42C1">parse</span><span style="color:#24292E">(response.</span><span style="color:#6F42C1">body</span><span style="color:#24292E">))</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#D73A49">  else</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#005CC5">    File</span><span style="color:#24292E">.</span><span style="color:#6F42C1">binwrite</span><span style="color:#24292E">(</span><span style="color:#032F62">'output.mp4'</span><span style="color:#24292E">, response.</span><span style="color:#6F42C1">body</span><span style="color:#24292E">)</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#005CC5">    puts</span><span style="color:#032F62"> 'Saved output.mp4'</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#D73A49">  end</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#D73A49">else</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#005CC5">  puts</span><span style="color:#032F62"> "Error: </span><span style="color:#032F62">#{response.</span><span style="color:#6F42C1">code</span><span style="color:#032F62">}</span><span style="color:#032F62">"</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#005CC5">  puts</span><span style="color:#24292E"> response.</span><span style="color:#6F42C1">body</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#D73A49">end</span></span></span></span></code></pre>54:T24f4,<pre class="shiki-dark" style="" tabindex="0"><code><span class="line"><span class="line-number"> 1</span><span class="line-content"><span class="line"><span style="color:#F97583">require</span><span style="color:#9ECBFF"> 'net/http'</span></span></span></span>
<span class="line"><span class="line-number"> 2</span><span class="line-content"><span class="line"><span style="color:#F97583">require</span><span style="color:#9ECBFF"> 'json'</span></span></span></span>
<span class="line"><span class="line-number"> 3</span><span class="line-content"><span class="line"><span style="color:#F97583">require</span><span style="color:#9ECBFF"> 'uri'</span></span></span></span>
<span class="line"><span class="line-number"> 4</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 5</span><span class="line-content"><span class="line"><span style="color:#FFAB70">uri</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> URI</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'https://api.segmind.com/v1/happyhorse'</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number"> 6</span><span class="line-content"><span class="line"><span style="color:#FFAB70">http</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> Net</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">HTTP</span><span style="color:#E1E4E8">.</span><span style="color:#F97583">new</span><span style="color:#E1E4E8">(uri.</span><span style="color:#B392F0">host</span><span style="color:#E1E4E8">, uri.</span><span style="color:#B392F0">port</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number"> 7</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">http.</span><span style="color:#B392F0">use_ssl</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> true</span></span></span></span>
<span class="line"><span class="line-number"> 8</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number"> 9</span><span class="line-content"><span class="line"><span style="color:#FFAB70">request</span><span style="color:#F97583"> =</span><span style="color:#79B8FF"> Net</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">HTTP</span><span style="color:#E1E4E8">::</span><span style="color:#79B8FF">Post</span><span style="color:#E1E4E8">.</span><span style="color:#F97583">new</span><span style="color:#E1E4E8">(uri)</span></span></span></span>
<span class="line"><span class="line-number">10</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">request[</span><span style="color:#9ECBFF">'x-api-key'</span><span style="color:#E1E4E8">] </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> 'YOUR_API_KEY'</span></span></span></span>
<span class="line"><span class="line-number">11</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">request[</span><span style="color:#9ECBFF">'Content-Type'</span><span style="color:#E1E4E8">] </span><span style="color:#F97583">=</span><span style="color:#9ECBFF"> 'application/json'</span></span></span></span>
<span class="line"><span class="line-number">12</span><span class="line-content"><span class="line"><span style="color:#E1E4E8">request.</span><span style="color:#B392F0">body</span><span style="color:#F97583"> =</span><span style="color:#9ECBFF"> '{</span></span></span></span>
<span class="line"><span class="line-number">13</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt": "A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style",</span></span></span></span>
<span class="line"><span class="line-number">14</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "negative_prompt": "blurry, low quality, distorted, watermark, text",</span></span></span></span>
<span class="line"><span class="line-number">15</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "resolution": "720p",</span></span></span></span>
<span class="line"><span class="line-number">16</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "duration": 5,</span></span></span></span>
<span class="line"><span class="line-number">17</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "aspect_ratio": "16:9",</span></span></span></span>
<span class="line"><span class="line-number">18</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "prompt_extend": true,</span></span></span></span>
<span class="line"><span class="line-number">19</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">  "watermark": false</span></span></span></span>
<span class="line"><span class="line-number">20</span><span class="line-content"><span class="line"><span style="color:#9ECBFF">}'</span></span></span></span>
<span class="line"><span class="line-number">21</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">22</span><span class="line-content"><span class="line"><span style="color:#FFAB70">response</span><span style="color:#F97583"> =</span><span style="color:#E1E4E8"> http.</span><span style="color:#B392F0">request</span><span style="color:#E1E4E8">(request)</span></span></span></span>
<span class="line"><span class="line-number">23</span><span class="line-content"><span class="line"></span></span></span>
<span class="line"><span class="line-number">24</span><span class="line-content"><span class="line"><span style="color:#F97583">if</span><span style="color:#E1E4E8"> response.</span><span style="color:#B392F0">code</span><span style="color:#F97583"> ==</span><span style="color:#9ECBFF"> '200'</span></span></span></span>
<span class="line"><span class="line-number">25</span><span class="line-content"><span class="line"><span style="color:#6A737D">  # Media models return the file itself; a JSON body carries the result instead.</span></span></span></span>
<span class="line"><span class="line-number">26</span><span class="line-content"><span class="line"><span style="color:#F97583">  if</span><span style="color:#E1E4E8"> response[</span><span style="color:#9ECBFF">'content-type'</span><span style="color:#E1E4E8">].</span><span style="color:#B392F0">to_s</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">start_with?</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'application/json'</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">27</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    puts</span><span style="color:#79B8FF"> JSON</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">pretty_generate</span><span style="color:#E1E4E8">(</span><span style="color:#79B8FF">JSON</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">parse</span><span style="color:#E1E4E8">(response.</span><span style="color:#B392F0">body</span><span style="color:#E1E4E8">))</span></span></span></span>
<span class="line"><span class="line-number">28</span><span class="line-content"><span class="line"><span style="color:#F97583">  else</span></span></span></span>
<span class="line"><span class="line-number">29</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    File</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">binwrite</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'output.mp4'</span><span style="color:#E1E4E8">, response.</span><span style="color:#B392F0">body</span><span style="color:#E1E4E8">)</span></span></span></span>
<span class="line"><span class="line-number">30</span><span class="line-content"><span class="line"><span style="color:#79B8FF">    puts</span><span style="color:#9ECBFF"> 'Saved output.mp4'</span></span></span></span>
<span class="line"><span class="line-number">31</span><span class="line-content"><span class="line"><span style="color:#F97583">  end</span></span></span></span>
<span class="line"><span class="line-number">32</span><span class="line-content"><span class="line"><span style="color:#F97583">else</span></span></span></span>
<span class="line"><span class="line-number">33</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  puts</span><span style="color:#9ECBFF"> "Error: </span><span style="color:#9ECBFF">#{response.</span><span style="color:#B392F0">code</span><span style="color:#9ECBFF">}</span><span style="color:#9ECBFF">"</span></span></span></span>
<span class="line"><span class="line-number">34</span><span class="line-content"><span class="line"><span style="color:#79B8FF">  puts</span><span style="color:#E1E4E8"> response.</span><span style="color:#B392F0">body</span></span></span></span>
<span class="line"><span class="line-number">35</span><span class="line-content"><span class="line"><span style="color:#F97583">end</span></span></span></span></code></pre>29:["$","div",null,{"className":"space-y-6 md:space-y-8","children":[["$","div",null,{"className":"flex flex-col lg:grid lg:grid-cols-2 gap-6 lg:gap-8","children":[["$","div",null,{"className":"order-1 lg:order-1","children":["$","$L30",null,{"groups":[{"mode":"async","label":"Async","mechanism":"POST /v2/happyhorse Â· submit + poll","examples":[{"language":"python-sdk","label":"Python (SDK)","code":"$31","highlightedLight":"$32","highlightedDark":"$33"},{"language":"curl","label":"cURL","code":"# 1. Submit to the v2 async endpoint -> returns a request_id\nREQUEST_ID=$(curl -s -X POST \"https://api.segmind.com/v2/happyhorse\" \\\n  -H \"x-api-key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"prompt\": \"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style\",\n  \"negative_prompt\": \"blurry, low quality, distorted, watermark, text\",\n  \"resolution\": \"720p\",\n  \"duration\": 5,\n  \"aspect_ratio\": \"16:9\",\n  \"prompt_extend\": true,\n  \"watermark\": false\n}' | jq -r .request_id)\n\n# 2. Poll status until \"COMPLETED\" (FAILED is served as HTTP 422)\ncurl -s \"https://api.segmind.com/v2/requests/$REQUEST_ID/status\" \\\n  -H \"x-api-key: YOUR_API_KEY\"\n\n# 3. Fetch the final result body (available for 1 hour)\ncurl -s \"https://api.segmind.com/v2/requests/$REQUEST_ID\" \\\n  -H \"x-api-key: YOUR_API_KEY\"","highlightedLight":"$34","highlightedDark":"$35"},{"language":"javascript","label":"JavaScript","code":"$36","highlightedLight":"$37","highlightedDark":"$38"},{"language":"go","label":"Go","code":"$39","highlightedLight":"$3a","highlightedDark":"$3b"},{"language":"php","label":"PHP","code":"$3c","highlightedLight":"$3d","highlightedDark":"$3e"},{"language":"ruby","label":"Ruby","code":"$3f","highlightedLight":"$40","highlightedDark":"$41"}]},{"mode":"sync","label":"Sync","mechanism":"POST /v1/happyhorse Â· single blocking call","examples":[{"language":"python-sdk","label":"Python (SDK)","code":"# pip install \"segmind>=1.1.0\"\n# export SEGMIND_API_KEY=\"YOUR_API_KEY\"\nimport segmind\n\n# Sync (v1): one blocking call, returns an httpx.Response.\nresponse = segmind.run_sync(\n    \"happyhorse\",\n    prompt=\"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style\",\n    negative_prompt=\"blurry, low quality, distorted, watermark, text\",\n    resolution=\"720p\",\n    duration=5,\n    aspect_ratio=\"16:9\",\n    prompt_extend=True,\n    watermark=False,\n)\n\n# Media models return the file itself; a JSON body carries the result instead.\nif response.headers.get(\"content-type\", \"\").startswith(\"application/json\"):\n    print(response.json())\nelse:\n    with open(\"output.mp4\", \"wb\") as f:\n        f.write(response.content)","highlightedLight":"$42","highlightedDark":"$43"},{"language":"python","label":"Python (requests)","code":"$44","highlightedLight":"$45","highlightedDark":"$46"},{"language":"curl","label":"cURL","code":"curl -X POST \"https://api.segmind.com/v1/happyhorse\" \\\n  -H \"x-api-key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"prompt\": \"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style\",\n  \"negative_prompt\": \"blurry, low quality, distorted, watermark, text\",\n  \"resolution\": \"720p\",\n  \"duration\": 5,\n  \"aspect_ratio\": \"16:9\",\n  \"prompt_extend\": true,\n  \"watermark\": false\n}' \\\n  -o output.mp4","highlightedLight":"$47","highlightedDark":"$48"},{"language":"javascript","label":"JavaScript","code":"$49","highlightedLight":"$4a","highlightedDark":"$4b"},{"language":"go","label":"Go","code":"$4c","highlightedLight":"$4d","highlightedDark":"$4e"},{"language":"php","label":"PHP","code":"$4f","highlightedLight":"$50","highlightedDark":"$51"},{"language":"ruby","label":"Ruby","code":"$52","highlightedLight":"$53","highlightedDark":"$54"}]}]}]}],"$L55"]}],"$L56","$L57"]}]
58:I[24824,["6693","static/chunks/fba4ba2d-460e04194f22506f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","3009","static/chunks/6a7d804d-a5cc510ceffe206f.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","7505","static/chunks/c02d83f4-5637599209ef9447.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","9509","static/chunks/9509-6125acd3006111c1.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","4378","static/chunks/4378-3f82908971052aa9.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6397","static/chunks/6397-b7ccd1edf8aedf12.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1742","static/chunks/1742-0ea812562873537a.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","1172","static/chunks/1172-89020d82938322e4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","6140","static/chunks/6140-b94b4e43e1bb103d.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x","8012","static/chunks/app/models/%5Broute%5D/api/page-117c8b87bdd6a7b4.js?dpl=dpl_CPYCfxesaX7RKfJUQZpH2JDib41x"],"ParameterDisplay"]
55:["$","div",null,{"className":"order-2 lg:order-2","children":["$","div",null,{"ref":"$undefined","className":"rounded-lg transition-all duration-200 text-foreground text-base p-4 md:p-6 bg-surface border border-border shadow-sm h-fit","children":["$","div",null,{"className":"space-y-4 sm:space-y-6","children":[["$","div",null,{"children":[["$","h3",null,{"className":"text-sm font-medium text-muted-foreground mb-2","children":"API Endpoint"}],["$","div",null,{"className":"bg-muted/30 border border-border px-2.5 py-2 rounded-md flex items-center gap-2","children":[["$","span",null,{"className":"text-xs font-medium text-muted-foreground bg-background px-2 py-0.5 rounded border border-border flex-shrink-0","children":"POST"}],["$","code",null,{"className":"text-xs font-mono text-foreground break-all overflow-x-auto","children":["https://api.segmind.com/v1/","happyhorse"]}]]}]]}],["$","div",null,{"children":[["$","h3",null,{"className":"text-lg font-medium text-foreground mb-4","children":"Parameters"}],["$","div",null,{"className":"space-y-3","children":[["$","$L58","prompt",{"param":{"name":"prompt","type":"string","description":"Describe scene, subjects, motion, camera, and audio cues. Cinematic prompts with lighting and camera details produce the best results.","required":true,"default":"A majestic white horse galloping through golden wheat fields at sunset, cinematic slow motion, warm golden hour lighting, dust particles catching sunlight, shallow depth of field, professional nature documentary style"}}],["$","$L58","aspect_ratio",{"param":{"name":"aspect_ratio","type":"string","description":"Aspect ratio for text-to-video only (ignored with image input). 16:9 for landscape, 9:16 for vertical.","required":false,"enum":["16:9","9:16","1:1","4:3","3:4"],"enumLabels":["16:9","9:16","1:1","4:3","3:4"],"default":"16:9","oneOf":"$1f:props:modelDetails:parameters_schema:properties:aspect_ratio:oneOf"}}],["$","$L58","audio_url",{"param":{"name":"audio_url","type":"string","description":"Audio URL (MP3/WAV, 3-30s, max 15MB) for lip-sync. Use speech audio for talking-head or voiceover-driven scenes.","required":false,"format":"uri"}}],["$","$L58","duration",{"param":{"name":"duration","type":"integer","description":"Video length in seconds (3-15). 5s is the sweet spot for quality and speed.","required":false,"default":5,"minimum":2,"maximum":15}}],["$","$L58","image",{"param":{"name":"image","type":"string","description":"First frame for image-to-video mode (URL or base64). Leave empty for text-to-video generation.","required":false,"format":"uri"}}],["$","$L58","last_frame",{"param":{"name":"last_frame","type":"string","description":"Ending frame for image-to-video mode only. Creates smooth transitions between start and end frames.","required":false,"format":"uri"}}],["$","$L58","negative_prompt",{"param":{"name":"negative_prompt","type":"string","description":"Elements to suppress (blur, artifacts, watermark). Tested: 'blurry, low quality, distorted, watermark, text' works well.","required":false,"default":"blurry, low quality, distorted, watermark, text"}}],["$","$L58","prompt_extend",{"param":{"name":"prompt_extend","type":"boolean","description":"LLM-rewrites short prompts for cinematic detail. Recommended on for brief prompts, off for precise control.","required":false,"default":true}}],["$","$L58","reference_images",{"param":{"name":"reference_images","type":"string[]","description":"Up to 5 reference image URLs (or uploads). Used as character/scene anchors for reference-to-video mode.","required":false,"items":"$1f:props:modelDetails:parameters_schema:properties:reference_images:items"}}],["$","$L58","reference_videos",{"param":{"name":"reference_videos","type":"string[]","description":"Up to 3 reference video URLs (or uploads). Used as motion/style anchors for reference-to-video mode.","required":false,"items":"$1f:props:modelDetails:parameters_schema:properties:reference_videos:items"}}],["$","$L58","reference_voice",{"param":{"name":"reference_voice","type":"string","description":"Audio file URL for character voice cloning in reference-to-video mode.","required":false,"format":"uri"}}],["$","$L58","resolution",{"param":{"name":"resolution","type":"string","description":"Output resolution. 720P for fast previews ($0.875), 1080P for final delivery ($1.50).","required":false,"enum":["720p","1080p"],"enumLabels":["720p","1080p"],"default":"720p","oneOf":"$1f:props:modelDetails:parameters_schema:properties:resolution:oneOf"}}],"$L59","$L5a","$L5b"]}]]}],"$L5c"]}]}]}]
56:["$","div",null,{"ref":"$undefined","className":"rounded-lg transition-all duration-200 text-foreground shadow-sm text-base p-6 bg-surface border border-border","children":[["$","h3",null,{"className":"text-lg font-medium text-foreground mb-2","children":"Asynchronous requests (v2)"}],["$","p",null,{"className":"text-sm text-muted-foreground mb-4","children":["Use ",["$","span",null,{"className":"font-medium text-foreground","children":"Async"}]," for video, long-running (>~60s), or high-concurrency workloads; ",["$","span",null,{"className":"font-medium text-foreground","children":"Sync"}]," ","is simplest for fast image & LLM calls. Async submits a"," ",["$","span",null,{"className":"font-medium text-foreground","children":"request"}]," and you poll it to completion."]}],["$","ol",null,{"className":"space-y-2 mb-5","children":[["$","li","1",{"className":"flex items-start gap-3","children":[["$","span",null,{"className":"text-xs font-mono bg-muted text-muted-foreground px-2 py-1 rounded flex-shrink-0","children":"1"}],["$","div",null,{"className":"min-w-0","children":[["$","code",null,{"className":"text-xs font-mono text-foreground break-all","children":"POST /v2/happyhorse"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":[["$","span",null,{"className":"font-medium","children":"Submit"}]," â€” ","returns request_id, status_url, response_url"]}]]}]]}],["$","li","2",{"className":"flex items-start gap-3","children":[["$","span",null,{"className":"text-xs font-mono bg-muted text-muted-foreground px-2 py-1 rounded flex-shrink-0","children":"2"}],["$","div",null,{"className":"min-w-0","children":[["$","code",null,{"className":"text-xs font-mono text-foreground break-all","children":"GET /v2/requests/{id}/status"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":[["$","span",null,{"className":"font-medium","children":"Poll"}]," â€” ","until COMPLETED or FAILED"]}]]}]]}],["$","li","3",{"className":"flex items-start gap-3","children":[["$","span",null,{"className":"text-xs font-mono bg-muted text-muted-foreground px-2 py-1 rounded flex-shrink-0","children":"3"}],["$","div",null,{"className":"min-w-0","children":[["$","code",null,{"className":"text-xs font-mono text-foreground break-all","children":"GET /v2/requests/{id}"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":[["$","span",null,{"className":"font-medium","children":"Result"}]," â€” ","final response body"]}]]}]]}]]}],["$","h4",null,{"className":"text-sm font-medium text-foreground mb-2","children":"Status states"}],["$","div",null,{"className":"grid sm:grid-cols-2 gap-2 mb-5","children":[["$","div","QUEUED",{"className":"flex items-center gap-2 bg-muted/30 border border-border px-3 py-2 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono font-semibold text-muted-foreground","children":"QUEUED"}],["$","span",null,{"className":"text-xs text-muted-foreground","children":["â€” ","Accepted, waiting for a worker"]}]]}],["$","div","PROCESSING",{"className":"flex items-center gap-2 bg-muted/30 border border-border px-3 py-2 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono font-semibold text-blue-600 dark:text-blue-400","children":"PROCESSING"}],["$","span",null,{"className":"text-xs text-muted-foreground","children":["â€” ","Running on a worker"]}]]}],["$","div","COMPLETED",{"className":"flex items-center gap-2 bg-muted/30 border border-border px-3 py-2 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono font-semibold text-emerald-600 dark:text-emerald-400","children":"COMPLETED"}],["$","span",null,{"className":"text-xs text-muted-foreground","children":["â€” ","Done â€” result body is ready"]}]]}],["$","div","FAILED",{"className":"flex items-center gap-2 bg-muted/30 border border-border px-3 py-2 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono font-semibold text-red-600 dark:text-red-400","children":"FAILED"}],["$","span",null,{"className":"text-xs text-muted-foreground","children":["â€” ","Errored (incl. content/RAI blocks)"]}]]}]]}],"$L5d"]}]
57:["$","div",null,{"ref":"$undefined","className":"rounded-lg transition-all duration-200 text-foreground shadow-sm text-base p-6 bg-surface border border-border","children":[["$","h3",null,{"className":"text-lg font-medium text-foreground mb-4","children":"Common Error Codes"}],["$","p",null,{"className":"text-sm text-muted-foreground mb-4","children":"The API returns standard HTTP status codes. Detailed error messages are provided in the response body."}],["$","div",null,{"className":"grid sm:grid-cols-2 gap-3","children":[["$","div","400",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"400"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Bad Request"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Invalid parameters or request format"}]]}]]}],["$","div","401",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"401"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Unauthorized"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Missing or invalid API key"}]]}]]}],["$","div","403",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"403"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Forbidden"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Insufficient permissions"}]]}]]}],["$","div","404",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"404"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Not Found"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Model or endpoint not found"}]]}]]}],["$","div","406",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"406"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Insufficient Credits"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Not enough credits to process request"}]]}]]}],["$","div","429",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"429"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Rate Limited"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Too many requests"}]]}]]}],["$","div","500",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"500"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Server Error"}],"$L5e"]}]]}],"$L5f","$L60"]}]]}]
59:["$","$L58","seed",{"param":{"name":"seed","type":"integer","description":"Reproducibility seed (0-2147483647). Set a fixed seed to reproduce the same output across runs.","required":false,"default":0}}]
5a:["$","$L58","video",{"param":{"name":"video","type":"string","description":"URL of an existing video to edit. Provide this with a prompt to restyle, recolour, or modify the video. Triggers video-edit mode.","required":false,"format":"uri"}}]
5b:["$","$L58","watermark",{"param":{"name":"watermark","type":"boolean","description":"Adds 'AI Generated' watermark to output. Disable for clean production-ready video.","required":false,"default":false}}]
5c:["$","div",null,{"className":"bg-emerald-500/5 border border-emerald-500/20 p-4 rounded-lg","children":[["$","h4",null,{"className":"text-sm font-medium text-emerald-700 dark:text-emerald-400 mb-2","children":"Response Type"}],["$","p",null,{"className":"text-sm text-emerald-600 dark:text-emerald-500 leading-relaxed","children":["Returns: ",["$","span",null,{"className":"font-semibold","children":"Video"}]]}]]}]
5d:["$","ul",null,{"className":"space-y-1.5 text-sm text-muted-foreground list-disc pl-5","children":[["$","li",null,{"children":["A ",["$","span",null,{"className":"font-mono text-foreground","children":"FAILED"}]," request is served as HTTP"," ",["$","span",null,{"className":"font-mono text-foreground","children":"422"}]," â€” the body still carries the"," ",["$","span",null,{"className":"font-mono text-foreground","children":"error"}]," detail."]}],["$","li",null,{"children":["An unknown or expired ",["$","span",null,{"className":"font-mono text-foreground","children":"request_id"}]," returns HTTP"," ",["$","span",null,{"className":"font-mono text-foreground","children":"404"}],"."]}],["$","li",null,{"children":["Results are retained for ",["$","span",null,{"className":"font-medium text-foreground","children":"1 hour"}],", then expire."]}],["$","li",null,{"children":["Content / RAI blocks surface as ",["$","span",null,{"className":"font-mono text-foreground","children":"FAILED"}],", not a separate state."]}],["$","li",null,{"children":["Track completion by ",["$","span",null,{"className":"font-medium text-foreground","children":"polling"}]," the status endpoint."]}]]}]
5e:["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Internal server error"}]
5f:["$","div","502",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"502"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Bad Gateway"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Service temporarily unavailable"}]]}]]}]
60:["$","div","504",{"className":"flex items-start gap-3 bg-muted/30 border border-border p-3 rounded-lg","children":[["$","span",null,{"className":"text-xs font-mono bg-red-500/10 text-red-600 dark:text-red-400 px-2 py-1 rounded flex-shrink-0","children":"504"}],["$","div",null,{"className":"min-w-0","children":[["$","h4",null,{"className":"text-sm font-medium text-foreground","children":"Timeout"}],["$","p",null,{"className":"text-xs text-muted-foreground mt-0.5","children":"Request timed out"}]]}]]}]
