feat: add code example
This commit is contained in:
		
							parent
							
								
									cd939db5c9
								
							
						
					
					
						commit
						1cb4e921db
					
				
							
								
								
									
										115
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										115
									
								
								README.md
									
									
									
									
									
								
							@ -113,6 +113,121 @@ Suno API currently mainly implements the following APIs:
 | 
				
			|||||||
For more detailed documentation, please check out the demo site:
 | 
					For more detailed documentation, please check out the demo site:
 | 
				
			||||||
[suno.gcui.art/docs](https://suno.gcui.art/docs)
 | 
					[suno.gcui.art/docs](https://suno.gcui.art/docs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Code example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```python
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					import requests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# replace your vercel domain
 | 
				
			||||||
 | 
					base_url = 'http://localhost:3000'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def custom_generate_audio(payload):
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/custom_generate"
 | 
				
			||||||
 | 
					    response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def generate_audio_by_prompt(payload):
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/generate"
 | 
				
			||||||
 | 
					    response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_audio_information(audio_ids):
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/get?ids={audio_ids}"
 | 
				
			||||||
 | 
					    response = requests.get(url)
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_quota_information():
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/get_limit"
 | 
				
			||||||
 | 
					    response = requests.get(url)
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    data = generate_audio_by_prompt({
 | 
				
			||||||
 | 
					        "prompt": "A popular heavy metal song about war, sung by a deep-voiced male singer, slowly and melodiously. The lyrics depict the sorrow of people after the war.",
 | 
				
			||||||
 | 
					        "make_instrumental": False,
 | 
				
			||||||
 | 
					        "wait_audio": False
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ids = f"{data[0]['id']},{data[1]['id']}"
 | 
				
			||||||
 | 
					    print(f"ids: {ids}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for _ in range(60):
 | 
				
			||||||
 | 
					        data = get_audio_information(ids)
 | 
				
			||||||
 | 
					        if data[0]["status"] == 'streaming':
 | 
				
			||||||
 | 
					            print(f"{data[0]['id']} ==> {data[0]['audio_url']}")
 | 
				
			||||||
 | 
					            print(f"{data[1]['id']} ==> {data[1]['audio_url']}")
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        # sleep 5s
 | 
				
			||||||
 | 
					        time.sleep(5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```js
 | 
				
			||||||
 | 
					const axios = require('axios');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// replace your vercel domain
 | 
				
			||||||
 | 
					const baseUrl = 'http://localhost:3000';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function customGenerateAudio(payload) {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/custom_generate`;
 | 
				
			||||||
 | 
					    const response = await axios.post(url, payload, { headers: { 'Content-Type': 'application/json' } });
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function generateAudioByPrompt(payload) {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/generate`;
 | 
				
			||||||
 | 
					    const response = await axios.post(url, payload, { headers: { 'Content-Type': 'application/json' } });
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function getAudioInformation(audioIds) {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/get?ids=${audioIds}`;
 | 
				
			||||||
 | 
					    const response = await axios.get(url);
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function getQuotaInformation() {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/get_limit`;
 | 
				
			||||||
 | 
					    const response = await axios.get(url);
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function main() {
 | 
				
			||||||
 | 
					    const data = await generateAudioByPrompt({
 | 
				
			||||||
 | 
					        prompt: "A popular heavy metal song about war, sung by a deep-voiced male singer, slowly and melodiously. The lyrics depict the sorrow of people after the war.",
 | 
				
			||||||
 | 
					        make_instrumental: false,
 | 
				
			||||||
 | 
					        wait_audio: false
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const ids = `${data[0].id},${data[1].id}`;
 | 
				
			||||||
 | 
					    console.log(`ids: ${ids}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (let i = 0; i < 60; i++) {
 | 
				
			||||||
 | 
					        const data = await getAudioInformation(ids);
 | 
				
			||||||
 | 
					        if (data[0].status === 'streaming') {
 | 
				
			||||||
 | 
					            console.log(`${data[0].id} ==> ${data[0].audio_url}`);
 | 
				
			||||||
 | 
					            console.log(`${data[1].id} ==> ${data[1].audio_url}`);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // sleep 5s
 | 
				
			||||||
 | 
					        await new Promise(resolve => setTimeout(resolve, 5000));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Integration with Custom Agents
 | 
					## Integration with Custom Agents
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can integrate Suno AI as a tool/plugin/action into your AI agent.
 | 
					You can integrate Suno AI as a tool/plugin/action into your AI agent.
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										116
									
								
								README_CN.md
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								README_CN.md
									
									
									
									
									
								
							@ -110,6 +110,122 @@ Suno API 目前主要实现了以下 API:
 | 
				
			|||||||
详细文档请查看演示站点:
 | 
					详细文档请查看演示站点:
 | 
				
			||||||
[suno.gcui.art/docs](https://suno.gcui.art/docs)
 | 
					[suno.gcui.art/docs](https://suno.gcui.art/docs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 代码示例
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```python
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					import requests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# replace your vercel domain
 | 
				
			||||||
 | 
					base_url = 'http://localhost:3000'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def custom_generate_audio(payload):
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/custom_generate"
 | 
				
			||||||
 | 
					    response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def generate_audio_by_prompt(payload):
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/generate"
 | 
				
			||||||
 | 
					    response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_audio_information(audio_ids):
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/get?ids={audio_ids}"
 | 
				
			||||||
 | 
					    response = requests.get(url)
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_quota_information():
 | 
				
			||||||
 | 
					    url = f"{base_url}/api/get_limit"
 | 
				
			||||||
 | 
					    response = requests.get(url)
 | 
				
			||||||
 | 
					    return response.json()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    data = generate_audio_by_prompt({
 | 
				
			||||||
 | 
					        "prompt": "A popular heavy metal song about war, sung by a deep-voiced male singer, slowly and melodiously. The lyrics depict the sorrow of people after the war.",
 | 
				
			||||||
 | 
					        "make_instrumental": False,
 | 
				
			||||||
 | 
					        "wait_audio": False
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ids = f"{data[0]['id']},{data[1]['id']}"
 | 
				
			||||||
 | 
					    print(f"ids: {ids}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for _ in range(60):
 | 
				
			||||||
 | 
					        data = get_audio_information(ids)
 | 
				
			||||||
 | 
					        if data[0]["status"] == 'streaming':
 | 
				
			||||||
 | 
					            print(f"{data[0]['id']} ==> {data[0]['audio_url']}")
 | 
				
			||||||
 | 
					            print(f"{data[1]['id']} ==> {data[1]['audio_url']}")
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        # sleep 5s
 | 
				
			||||||
 | 
					        time.sleep(5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```js
 | 
				
			||||||
 | 
					const axios = require('axios');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// replace your vercel domain
 | 
				
			||||||
 | 
					const baseUrl = 'http://localhost:3000';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function customGenerateAudio(payload) {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/custom_generate`;
 | 
				
			||||||
 | 
					    const response = await axios.post(url, payload, { headers: { 'Content-Type': 'application/json' } });
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function generateAudioByPrompt(payload) {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/generate`;
 | 
				
			||||||
 | 
					    const response = await axios.post(url, payload, { headers: { 'Content-Type': 'application/json' } });
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function getAudioInformation(audioIds) {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/get?ids=${audioIds}`;
 | 
				
			||||||
 | 
					    const response = await axios.get(url);
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function getQuotaInformation() {
 | 
				
			||||||
 | 
					    const url = `${baseUrl}/api/get_limit`;
 | 
				
			||||||
 | 
					    const response = await axios.get(url);
 | 
				
			||||||
 | 
					    return response.data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function main() {
 | 
				
			||||||
 | 
					    const data = await generateAudioByPrompt({
 | 
				
			||||||
 | 
					        prompt: "A popular heavy metal song about war, sung by a deep-voiced male singer, slowly and melodiously. The lyrics depict the sorrow of people after the war.",
 | 
				
			||||||
 | 
					        make_instrumental: false,
 | 
				
			||||||
 | 
					        wait_audio: false
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const ids = `${data[0].id},${data[1].id}`;
 | 
				
			||||||
 | 
					    console.log(`ids: ${ids}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (let i = 0; i < 60; i++) {
 | 
				
			||||||
 | 
					        const data = await getAudioInformation(ids);
 | 
				
			||||||
 | 
					        if (data[0].status === 'streaming') {
 | 
				
			||||||
 | 
					            console.log(`${data[0].id} ==> ${data[0].audio_url}`);
 | 
				
			||||||
 | 
					            console.log(`${data[1].id} ==> ${data[1].audio_url}`);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // sleep 5s
 | 
				
			||||||
 | 
					        await new Promise(resolve => setTimeout(resolve, 5000));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 集成到到常见的自定义 Agent 中
 | 
					## 集成到到常见的自定义 Agent 中
 | 
				
			||||||
 | 
					
 | 
				
			||||||
你可以把 suno ai 当做一个 工具/插件/Action 集成到你的 AI Agent 中。
 | 
					你可以把 suno ai 当做一个 工具/插件/Action 集成到你的 AI Agent 中。
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user