सार्वजनिक API

अपने कोड से वीडियो, छवियाँ और संगीत बनाएं

एक कुंजी बनाएं, Bearer प्रमाणीकरण के साथ अनुरोध भेजें और जब तक आपकी फ़ाइल तैयार न हो जाए, कार्य की स्थिति जांचते रहें। वही मॉडल, कीमतें, योजना सीमाएं और रिफंड NovaMotions AI स्टूडियो के समान, एक साझा क्रेडिट बैलेंस से।

बेस URLhttps://novamotions.com/api/v1

त्वरित शुरुआत

शून्य से लेकर पूरा वीडियो बनाने तक तीन चरण। हर अनुरोध साधारण HTTPS के साथ JSON होता है, इसलिए कोई भी भाषा या टूल काम करता है।

  1. 1

    एक कुंजी बनाएं

    अपने खाते में API पृष्ठ खोलें और एक कुंजी बनाएं। पूरी कुंजी केवल एक बार दिखाई जाती है, इसलिए इसे API_KEY नामक पर्यावरण चर में सहेजें।

  2. 2

    एक कार्य सबमिट करें

    मॉडल, एक प्रॉम्प्ट और कोई विकल्प भेजें। क्रेडिट एक बार सबमिट करते समय कटते हैं, और प्रतिक्रिया बताती है कि कितने क्रेडिट बचे हैं।

    curl -X POST https://novamotions.com/api/v1/videos \
      -H "Authorization: Bearer $API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "seedance-2-pro",
        "prompt": "रात में बारिश वाले नीयन सड़क के माध्यम से धीमी डॉली शॉट, गीले डामर पर प्रतिबिंब, सिनेमाई",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9"
      }'
  3. 3

    जब तक तैयार न हो जाए जांचते रहें

    कुछ सेकंड में एक बार कार्य की स्थिति जांचें। जब स्थिति सफल हो जाए, तो output_url से फ़ाइल डाउनलोड करें। यदि विफल हो गया, तो क्रेडिट आपके बैलेंस में वापस आ जाते हैं।

    TASK_ID=your_task_id
    while true
    do
      TASK=$(curl -s https://novamotions.com/api/v1/tasks/$TASK_ID -H "Authorization: Bearer $API_KEY")
      STATUS=$(echo "$TASK" | jq -r .status)
      echo "$STATUS"
      if [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ]
      then
        echo "$TASK" | jq
        break
      fi
      sleep 5
    done

प्रमाणीकरण

हर अनुरोध के Authorization हेडर में अपनी कुंजी भेजें। कुंजी nm_live_ से शुरू होती हैं और एक खाते से संबंधित होती हैं।

HTTP
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json
बेस URL
सभी एंडपॉइंट्स https://novamotions.com/api/v1 के अंतर्गत होते हैं और JSON लौटाते हैं।
कुंजियों को गोपनीय रखें
API को अपने सर्वर से कॉल करें, कभी ब्राउज़र या मोबाइल ऐप से नहीं। रद्द की गई कुंजी तुरंत काम करना बंद कर देती है।
एक बैलेंस
API कॉल कुंजी मालिक के क्रेडिट खर्च करते हैं, वही बैलेंस जो स्टूडियो उपयोग करता है। प्रति जनरेशन योजना सीमाएं भी लागू होती हैं।
मीडिया URL
आप जो छवियाँ, वीडियो और ऑडियो भेजते हैं वे सार्वजनिक https URL होने चाहिए जो बिना कुकी या लॉगिन के लोड हों।

मॉडल सूचीबद्ध करें

GET/api/v1/models

API द्वारा सेवा किए जाने वाले हर मॉडल, उसके मोड, अवधि, रिज़ॉल्यूशन, पहलू अनुपात, ऑडियो समर्थन, संदर्भ सीमाएं और क्रेडिट में सबसे कम कीमत के साथ। इसका उपयोग विकल्पों को हार्ड-कोड करने के बजाय मॉडल चयनकर्ता बनाने के लिए करें।

अनुरोध

curl https://novamotions.com/api/v1/models \
  -H "Authorization: Bearer $API_KEY"

प्रतिक्रिया

JSON
{
  "object": "list",
  "data": [
    {
      "slug": "seedance-2-pro",
      "name": "Seedance 2.0 Pro",
      "kind": "video",
      "endpoint": "/api/v1/videos",
      "available": true,
      "modes": [
        "text-to-video",
        "image-to-video",
        "reference-to-video"
      ],
      "durations": [
        4,
        5,
        6,
        8,
        10,
        12,
        15
      ],
      "default_duration": 5,
      "resolutions": [
        "480p",
        "720p",
        "1080p",
        "4K"
      ],
      "aspect_ratios": [
        "16:9",
        "9:16",
        "1:1",
        "4:3",
        "3:4",
        "21:9"
      ],
      "audio": {
        "supported": true,
        "extra_credits": 20
      },
      "references": {
        "images": 9,
        "videos": 3,
        "audio": 3,
        "end_frame": true
      },
      "max_count": 4,
      "prompt_max_length": 10000,
      "from_credits": 35
    }
  ]
}

बैलेंस जांचें

GET/api/v1/balance

वर्तमान में कुंजी मालिक द्वारा खर्च किए जा सकने वाले क्रेडिट, उनके समाप्ति तिथियों के साथ पूलों में विभाजित, साथ ही वर्तमान योजना।

अनुरोध

curl https://novamotions.com/api/v1/balance \
  -H "Authorization: Bearer $API_KEY"

प्रतिक्रिया

JSON
{
  "object": "balance",
  "balance": 1175,
  "never_expiring": 375,
  "next_expiry": "2026-11-17T00:00:00.000Z",
  "pools": [
    {
      "source": "subscription",
      "remaining": 800,
      "granted": 2000,
      "expires_at": "2026-11-17T00:00:00.000Z"
    },
    {
      "source": "topup",
      "remaining": 375,
      "granted": 375,
      "expires_at": null
    }
  ],
  "plan": {
    "name": "Pro",
    "status": "active",
    "cycle": "monthly",
    "renews_or_ends_at": "2026-11-14T00:00:00.000Z"
  }
}

वीडियो बनाएं

POST/api/v1/videos

टेक्स्ट से वीडियो, छवि से वीडियो (एक प्रारंभ फ्रेम और वैकल्पिक रूप से एक अंत फ्रेम) या संदर्भ से वीडियो (छवियाँ, क्लिप और ऑडियो जो परिणाम को मार्गदर्शित करते हैं)। मोड आपके इनपुट से चुना जाता है जब आप इसे छोड़ देते हैं।

पैरामीटर

  • modelstring
    आवश्यकमॉडल स्लग models एंडपॉइंट से।
  • promptstring
    आवश्यकक्लिप में क्या होना चाहिए। छवि-से-वीडियो के लिए वैकल्पिक, जहां प्रारंभ फ्रेम नेतृत्व करता है।
  • modestring
    वैकल्पिकtext-to-video, image-to-video या reference-to-video। जब छोड़ा जाए तो आपके इनपुट से चुना जाता है।
  • durationinteger
    वैकल्पिकक्लिप की लंबाई सेकंड में। मॉडल की अवधि में से एक होनी चाहिए, अन्यथा इसका डिफ़ॉल्ट उपयोग होता है।
  • resolutionstring
    वैकल्पिकआउटपुट रिज़ॉल्यूशन जैसे 720p या 1080p, मॉडल की सूची से।
  • aspect_ratiostring
    वैकल्पिकमॉडल की सूची से 16:9, 9:16, 1:1, 4:3, 3:4 या 21:9। डिफ़ॉल्ट 16:9 है।
  • audioboolean
    वैकल्पिकउन मॉडलों पर संवाद, प्रभाव और माहौल के साथ साउंडट्रैक बनाएं जो इसे सपोर्ट करते हैं। 20 क्रेडिट्स जोड़ता है। डिफ़ॉल्ट false है।
  • image_urlstring (URL)
    वैकल्पिकइमेज-टू-वीडियो के लिए प्रारंभ फ्रेम।
  • end_image_urlstring (URL)
    वैकल्पिकअंतिम फ्रेम, उन मॉडलों पर जो पहले और आखिरी फ्रेम को सपोर्ट करते हैं।
  • reference_image_urlsstring[]
    वैकल्पिकरेफरेंस-टू-वीडियो के लिए संदर्भ छवियां, मॉडल की सीमा तक।
  • reference_video_urlsstring[]
    वैकल्पिकरेफरेंस-टू-वीडियो के लिए संदर्भ क्लिप्स, मॉडल की सीमा तक।
  • reference_audio_urlsstring[]
    वैकल्पिकसाउंडट्रैक को मार्गदर्शित करने वाला ऑडियो, मॉडल की सीमा तक।
  • countinteger
    वैकल्पिकएक ही अनुरोध से कितने वीडियो बनाना है, 1 से 4 तक। प्रत्येक एक अलग कार्य है और अलग से चार्ज किया जाता है।
  • seedinteger
    वैकल्पिकदोहराए जाने वाले परिणामों के लिए फिक्स्ड सीड। बैच में हर अतिरिक्त आइटम को अगला सीड मिलता है।

अनुरोध

curl -X POST https://novamotions.com/api/v1/videos \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-pro",
    "prompt": "रात में बारिश वाले नीयन सड़क के माध्यम से धीमी डॉली शॉट, गीले डामर पर प्रतिबिंब, सिनेमाई",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }'

प्रतिक्रिया

JSON
{
  "tasks": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "status": "queued",
      "credits": 44,
      "url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
    }
  ],
  "credits_charged": 44,
  "balance": 1131
}

छवियाँ बनाएं

POST/api/v1/images

टेक्स्ट से छवि, या प्रॉम्प्ट के साथ मौजूदा छवि संपादित करें। प्रति अनुरोध चार तक छवियाँ मांगें, प्रत्येक अपनी अलग कार्य होती है।

पैरामीटर

  • modelstring
    आवश्यकमॉडल स्लग models एंडपॉइंट से।
  • promptstring
    आवश्यकछवि में क्या दिखाना चाहिए, या आप जो छवि भेजते हैं उसे कैसे बदलना है।
  • modestring
    वैकल्पिकटेक्स्ट-टू-इमेज या इमेज-एडिट। छोड़ने पर आपके इनपुट से चुना जाता है।
  • resolutionstring
    वैकल्पिकमॉडल की सूची से 1K, 2K या 4K।
  • aspect_ratiostring
    वैकल्पिकमॉडल की सूची से आस्पेक्ट रेशियो, उन मॉडलों पर ऑटो सहित जो इसे सपोर्ट करते हैं।
  • image_urlstring (URL)
    वैकल्पिकसंपादित करने के लिए छवि। इमेज-एडिट के लिए आवश्यक।
  • reference_image_urlsstring[]
    वैकल्पिकसंपादन के लिए अतिरिक्त संदर्भ छवियां, मॉडल की सीमा तक।
  • countinteger
    वैकल्पिकप्रॉम्प्ट प्रति छवियां, 1 से 4 तक। प्रत्येक एक अलग कार्य है।
  • seedinteger
    वैकल्पिकदोहराए जाने वाले परिणामों के लिए फिक्स्ड सीड। बैच में हर अतिरिक्त आइटम को अगला सीड मिलता है।

अनुरोध

curl -X POST https://novamotions.com/api/v1/images \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "ओक पर सिरेमिक कॉफी कप की स्टूडियो उत्पाद फोटो, नरम खिड़की की रोशनी, कम गहराई वाला क्षेत्र",
    "resolution": "1K",
    "aspect_ratio": "1:1",
    "count": 1
  }'

प्रतिक्रिया

JSON
{
  "tasks": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "status": "queued",
      "credits": 3,
      "url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
    }
  ],
  "credits_charged": 3,
  "balance": 1172
}

गाना बनाएं

POST/api/v1/music

विवरण से पूरा गाना, आपके अपने गीतों के साथ या केवल वाद्य यंत्र के रूप में।

पैरामीटर

  • modelstring
    आवश्यकमॉडल स्लग models एंडपॉइंट से।
  • promptstring
    आवश्यकगीत की शैली, मूड, वाद्ययंत्र और टेम्पो।
  • durationinteger
    वैकल्पिकमॉडल की अवधि से गीत की लंबाई सेकंड में।
  • lyricsstring
    वैकल्पिकआपके अपने गीत। मॉडल को लिखने दें तो छोड़ दें।
  • instrumentalboolean
    वैकल्पिकवोकल के बिना गीत बनाएं। डिफ़ॉल्ट false है।

अनुरोध

curl -X POST https://novamotions.com/api/v1/music \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-music",
    "prompt": "नरम पियानो, विनाइल क्रैकल और आरामदायक देर रात की लय के साथ गर्म लो-फाई हिप हॉप",
    "duration": 60,
    "instrumental": false
  }'

प्रतिक्रिया

JSON
{
  "tasks": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "status": "queued",
      "credits": 11,
      "url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
    }
  ],
  "credits_charged": 11,
  "balance": 1164
}

कार्य प्राप्त करें

GET/api/v1/tasks/{id}

अपने आईडी से कार्य की स्थिति जांचें। जब स्थिति सफल हो जाए, तो output_url तैयार फ़ाइल की ओर संकेत करता है। जांचने से पढ़ने की सीमा का उपयोग होता है, इसलिए यह आपके सबमिट बजट को प्रभावित नहीं करता।

अनुरोध

curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
  -H "Authorization: Bearer $API_KEY"

प्रतिक्रिया

JSON
{
  "id": "cmtask8k2x0001ab7c9d0e1f2",
  "object": "task",
  "kind": "video",
  "model": "seedance-2-pro",
  "mode": "text-to-video",
  "status": "succeeded",
  "progress": 100,
  "prompt": "रात में बारिश वाले नीयन सड़क के माध्यम से धीमी डॉली शॉट, गीले डामर पर प्रतिबिंब, सिनेमाई",
  "params": {
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "audio": false,
    "seed": null
  },
  "output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
  "thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
  "width": 1280,
  "height": 720,
  "duration_seconds": 5,
  "credits": 44,
  "refunded": false,
  "error": null,
  "created_at": "2026-10-18T09:30:00.000Z",
  "completed_at": "2026-10-18T09:31:12.000Z"
}

कार्य सूचीबद्ध करें

GET/api/v1/tasks

पिछले 30 दिनों में API के माध्यम से बनाए गए कार्य, नवीनतम पहले, एकल कार्य के समान स्वरूप के साथ। अगला पृष्ठ लोड करने के लिए next_cursor को cursor के रूप में पास करें।

पैरामीटर

  • limitinteger
    वैकल्पिकप्रति पृष्ठ परिणाम, 1 से 50 तक। डिफ़ॉल्ट 20 है।
  • cursorstring
    वैकल्पिकपिछले पृष्ठ से next_cursor मान।
  • statusstring
    वैकल्पिककेवल इस स्थिति वाले कार्य: queued, running, succeeded या failed।

अनुरोध

curl https://novamotions.com/api/v1/tasks?limit=20 \
  -H "Authorization: Bearer $API_KEY"

प्रतिक्रिया

JSON
{
  "object": "list",
  "data": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "object": "task",
      "kind": "video",
      "model": "seedance-2-pro",
      "mode": "text-to-video",
      "status": "succeeded",
      "progress": 100,
      "prompt": "रात में बारिश वाले नीयन सड़क के माध्यम से धीमी डॉली शॉट, गीले डामर पर प्रतिबिंब, सिनेमाई",
      "params": {
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9",
        "audio": false,
        "seed": null
      },
      "output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
      "thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
      "width": 1280,
      "height": 720,
      "duration_seconds": 5,
      "credits": 44,
      "refunded": false,
      "error": null,
      "created_at": "2026-10-18T09:30:00.000Z",
      "completed_at": "2026-10-18T09:31:12.000Z"
    }
  ],
  "next_cursor": null
}

कार्य की स्थिति

एक कार्य queued से running में जाता है और succeeded या failed के रूप में समाप्त होता है। किसी भी अंतिम स्थिति पर पोलिंग बंद करें।

queued
स्वीकृत और रेंडर स्लॉट के लिए प्रतीक्षा कर रहा है। पोलिंग जारी रखें।
running
अब रेंडर हो रहा है। प्रगति 0 से 99 तक जाती है।
succeeded
पूरा हुआ। output_url और thumbnail_url तैयार फ़ाइलों की ओर इशारा करते हैं।
failed
परिणाम के बिना समाप्त। error कारण बताता है और refunded true है, क्रेडिट्स आपके बैलेंस में वापस आ गए हैं।

त्रुटि कोड

हर त्रुटि का एक ही स्वरूप होता है। कोड पर शाखा बनाएं और व्यक्ति को संदेश दिखाएं। एक स्वीकृत कार्य बाद में भी विफल हो सकता है, इसलिए जब आप पोल करें तो उसकी स्थिति जांचें।

त्रुटि प्रतिक्रिया
{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this request. Top up or renew your plan, then retry.",
    "needed": 44,
    "balance": 14
  }
}
  • 400invalid_jsonबॉडी JSON ऑब्जेक्ट नहीं है।
  • 401unauthorizedAuthorization हेडर में Bearer कुंजी नहीं है।
  • 401invalid_api_keyकुंजी मौजूद नहीं है या गलत है।
  • 401key_revokedकुंजी रद्द कर दी गई है। नई बनाएं।
  • 402insufficient_creditsइस अनुरोध के लिए पर्याप्त क्रेडिट्स नहीं हैं। प्रतिक्रिया में आवश्यक और बैलेंस शामिल हैं।
  • 403plan_limit_exceededअनुरोध योजना की प्रति-जनरेशन सीमा से ऊपर है। अवधि या रिज़ॉल्यूशन कम करें।
  • 403account_suspendedजिस खाते के पास कुंजी है वह निलंबित है।
  • 403api_disabledAPI अभी बंद है।
  • 404not_foundयह कार्य या एंडपॉइंट इस खाते पर मौजूद नहीं है।
  • 404model_not_foundइस स्लग वाला कोई मॉडल नहीं। मॉडल्स एंडपॉइंट जांचें।
  • 409too_many_runningइस खाते पर पहले से 3 कार्य चल रहे हैं। किसी एक के पूरा होने का इंतजार करें।
  • 422invalid_requestकोई फ़ील्ड गायब है या गलत प्रकार का है। details में प्रत्येक समस्या सूचीबद्ध है।
  • 422wrong_endpointमॉडल किसी अन्य एंडपॉइंट का है, जैसे वीडियो के लिए भेजे गए इमेज मॉडल।
  • 422invalid_modeयह मोड इस एंडपॉइंट को ज्ञात नहीं है।
  • 422mode_not_supportedमॉडल इस मोड का समर्थन नहीं करता।
  • 422prompt_requiredइस मोड के लिए प्रॉम्प्ट आवश्यक है।
  • 422image_requiredइस मोड के लिए image_url आवश्यक है।
  • 429rate_limitedबहुत अधिक अनुरोध। Retry-After में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।
  • 500internal_errorहमारी तरफ कुछ टूट गया। कुछ देर बाद पुनः प्रयास करें।
  • 503service_busyहम अभी पूर्ण क्षमता पर हैं। कुछ मिनट बाद पुनः प्रयास करें।

क्रेडिट्स और रिफंड

सबमिट करते समय एक बार चार्ज किया गया

प्रत्येक कार्य की लागत स्टूडियो में समान सेटिंग्स के बराबर होती है। सबमिट प्रतिक्रिया में credits_charged और आपका नया बैलेंस लौटता है। वीडियो पर ऑडियो जोड़ने से 20 क्रेडिट्स अतिरिक्त लगते हैं।

विफल कार्यों का पूर्ण रिफंड

यदि कोई कार्य किसी भी कारण से विफल होता है, तो उसके सभी क्रेडिट्स वापस उनके स्रोत पूलों में चले जाते हैं और कार्य refunded को true दिखाता है। दावा करने के लिए कुछ नहीं।

योजना सीमाएँ लागू होती हैं

आपकी योजना की प्रति-जनरेशन सीमा API कार्यों पर भी लागू होती है। सबसे पहले वे क्रेडिट्स खर्च होते हैं जिनकी समाप्ति जल्दी होती है, टॉप-अप क्रेडिट्स बाद में।

रेट लिमिट्स

सीमाएँ कुंजी के लिए एक रोलिंग मिनट में गिनी जाती हैं। सीमा पार करने पर आपको HTTP 429 मिलता है जिसमें सेकंड में Retry-After हेडर होता है। हर प्रतिक्रिया में X-RateLimit हेडर होते हैं ताकि आप उससे पहले धीमा कर सकें।

सबमिट करें
प्रति मिनट 30
वीडियो, छवियां और गीत बनाना।
पढ़ें
प्रति मिनट 120
कार्य, बैलेंस और मॉडल। सबमिट से अलग गिने जाते हैं।
एक साथ चल रहे
3
प्रति खाता एक साथ रेंडर हो रहे कार्य।
रेट लिमिट हेडर
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42

मॉडल

वे मॉडल जिन्हें आप आज उनके स्लग और न्यूनतम कीमत के साथ कॉल कर सकते हैं। मॉडल एंडपॉइंट वही सूची हर विकल्प के साथ लौटाता है।

  • Seedance 2.5seedance-2-545 क्रेडिट
  • Seedance 2.0 Proseedance-2-pro35 क्रेडिट
  • Seedance 2.0 Miniseedance-2-mini24 क्रेडिट
  • Wan 3.0wan-346 क्रेडिट
  • MiniMax H3minimax-h330 क्रेडिट
  • Kling 3kling-330 क्रेडिट
  • Seedance 1.5 Proseedance-1-5-pro31 क्रेडिट
  • Seedance 1.0seedance-132 क्रेडिट
  • Kling O3kling-o346 क्रेडिट
  • Kling 2.6kling-2-641 क्रेडिट
  • Wan 2.7wan-2-735 क्रेडिट
  • Wanwan32 क्रेडिट
  • Grokgrok-video47 क्रेडिट
  • Veo 3veo-342 क्रेडिट
  • GPT Image 2.5gpt-image-2-54 क्रेडिट
  • GPT Image 2gpt-image-23 क्रेडिट
  • Seedream 5 Proseedream-5-pro4 क्रेडिट
  • Seedream 5seedream-53 क्रेडिट
  • Nano Banana Pronano-banana-pro5 क्रेडिट
  • Nano Banana 2nano-banana-23 क्रेडिट
  • Nano Banana 2 Litenano-banana-2-lite2 क्रेडिट
  • AI Musicai-music6 क्रेडिट

बनाने के लिए तैयार?

अपने खाते में एक कुंजी बनाएं और एक मिनट में अपनी पहली अनुरोध भेजें।

API कुंजी बनाएं