Quick Start
This Quick Start guide demonstrates Synvo's multimodal AI capabilities using real demo files. You will learn how to upload and query different file types: PDFs, images, videos, and audio files. Each demo includes downloadable files and specific questions to showcase AI understanding across modalities. You can also manage your files and queries in Synvo Dashboard.
Demo Files Overview
We will use these real files to demonstrate multimodal capabilities. Click on each tab below to preview and interact with the content:
NTU Annual Report 2024
Question: "How many patents did NTU file in FY2023?"
Expected Answer: 672
š„ Download PDF | š This report contains detailed patent filing statistics for FY2023
WellFest Event Poster
Question: "When is the WellFest Finale event and where is it located?"
Expected Answer: 23rd October 2025 (Thursday), 11am to 4pm, Nanyang Auditorium Foyer
š„ Download Image | šŖ Click image to view full size | Contains event timing and location details
Andrew's Machine Learning Lecture
Question: "What is the answer to the in-video quiz in Andrew's lecture?"
Expected Answer: a_2^3 = g(\Omega_2^3 \cdot a^2 + b_2^3)
š„ Download Video | š Educational ML content with mathematical formulas and quiz questions
Finance Lecture on EBIT
Question: "In the lecture about the operating profit margin formula, what is the value of EBIT used in the example calculation for the year 2018?"
Expected Answer: EBIT = $8 million
š„ Download Audio | š° Finance lecture covering EBIT calculations and profit margin formulas
Step 1: Setup
1.1 Create API Key
First, create an API key to authenticate your requests:
- Log into your Synvo dashboard
- Navigate to API Keys section
- Click "Create New Key"
- Give it a name (e.g., "My First Key")
- Copy and save the key immediately - you won't see it again!
1.2 Set API Key as Environment Variable
Set your API key as an environment variable:
export SYNVO_API_KEY="your_api_key_here"1.3 Download Demo Files
Download all demo files to your local directory:
Save all files to the same directory where you will run the code examples.
Step 2: Upload All Files
Upload all four demo files at once and wait for processing to complete.
import requests
import json
import time
import os
api_key = os.getenv("SYNVO_API_KEY")
# Define all files to upload
files_to_upload = [
"NTU_Annual_Report_2024.pdf",
"poster.jpg",
"Andrew_lecture.mp4",
"Finance_lecture.mp3"
]
# Upload all files
file_ids = {}
for filename in files_to_upload:
print(f"Uploading {filename}...")
with open(filename, "rb") as f:
response = requests.post(
"https://api.synvo.ai/file/upload",
files={"file": f},
data={"path": "/", "build_memory": "true"},
headers={"X-API-Key": api_key}
)
file_id = response.json()["file_id"]
file_ids[filename] = file_id
print(f"ā
{filename} uploaded: {file_id}")
# Wait for all files to complete processing
print("\nā³ Waiting for all files to process...")
for filename, file_id in file_ids.items():
while True:
status_response = requests.get(
f"https://api.synvo.ai/file/status/{file_id}",
headers={"X-API-Key": api_key}
)
status = status_response.json()["status"]
if status == "COMPLETED":
print(f"ā
{filename} processing complete!")
break
elif status == "FAILED":
print(f"ā {filename} processing failed!")
break
time.sleep(5)
print("\nš All files ready for querying!")
print("\nFile IDs:")
for filename, file_id in file_ids.items():
print(f" {filename}: {file_id}")# Upload all files
echo "Uploading files..."
# Upload PDF
PDF_RESPONSE=$(curl -s -X POST "https://api.synvo.ai/file/upload" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F "file=@./NTU_Annual_Report_2024.pdf" \
-F "path=/" \
-F "build_memory=true")
PDF_FILE_ID=$(echo $PDF_RESPONSE | jq -r '.file_id')
echo "ā
PDF uploaded: $PDF_FILE_ID"
# Upload Image
IMAGE_RESPONSE=$(curl -s -X POST "https://api.synvo.ai/file/upload" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F "file=@./poster.jpg" \
-F "path=/" \
-F "build_memory=true")
IMAGE_FILE_ID=$(echo $IMAGE_RESPONSE | jq -r '.file_id')
echo "ā
Image uploaded: $IMAGE_FILE_ID"
# Upload Video
VIDEO_RESPONSE=$(curl -s -X POST "https://api.synvo.ai/file/upload" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F "file=@./Andrew_lecture.mp4" \
-F "path=/" \
-F "build_memory=true")
VIDEO_FILE_ID=$(echo $VIDEO_RESPONSE | jq -r '.file_id')
echo "ā
Video uploaded: $VIDEO_FILE_ID"
# Upload Audio
AUDIO_RESPONSE=$(curl -s -X POST "https://api.synvo.ai/file/upload" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F "file=@./Finance_lecture.mp3" \
-F "path=/" \
-F "build_memory=true")
AUDIO_FILE_ID=$(echo $AUDIO_RESPONSE | jq -r '.file_id')
echo "ā
Audio uploaded: $AUDIO_FILE_ID"
# Wait for all files to process
echo -e "\nā³ Waiting for all files to process..."
for FILE_ID in "$PDF_FILE_ID" "$IMAGE_FILE_ID" "$VIDEO_FILE_ID" "$AUDIO_FILE_ID"; do
while true; do
STATUS=$(curl -s -X GET "https://api.synvo.ai/file/status/$FILE_ID" \
-H "X-API-Key: $SYNVO_API_KEY" | jq -r '.status')
if [ "$STATUS" = "COMPLETED" ]; then
echo "ā
File $FILE_ID ready!"
break
elif [ "$STATUS" = "FAILED" ]; then
echo "ā File $FILE_ID failed!"
break
fi
sleep 5
done
done
echo -e "\nš All files ready for querying!"
echo -e "\nFile IDs:"
echo " PDF: $PDF_FILE_ID"
echo " Image: $IMAGE_FILE_ID"
echo " Video: $VIDEO_FILE_ID"
echo " Audio: $AUDIO_FILE_ID"Step 3: Query Files
Now query each file with specific questions to demonstrate multimodal AI capabilities.
Python
Question: "How many patents did NTU file in FY2023?"
Expected Answer: 672
import requests
import json
import os
api_key = os.getenv("SYNVO_API_KEY")
payload = {
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "How many patents did NTU file in FY2023?"}
]
}]
}
response = requests.post(
"https://api.synvo.ai/ai/query",
data={
"payload": json.dumps(payload),
"model": "synvo",
"force_search": "true"
},
headers={"X-API-Key": api_key}
)
result = response.json()
# Print top 3 related factsed facts
k = 3
facts = result["content"][0]["facts"][:k]
for i, fact in enumerate(facts, 1):
print(f"\n--- Fact {i} ---")
print(f"Chunk: {fact['chunk']}...")
print(f"Reference: {fact['reference']}")Question: "When is the WellFest Finale event and where is it located?"
Expected Answer: 23rd October 2025 (Thursday), 11am to 4pm, Nanyang Auditorium Foyer
import requests
import json
import os
api_key = os.getenv("SYNVO_API_KEY")
payload = {
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "When is the WellFest Finale event and where is it located?"}
]
}]
}
response = requests.post(
"https://api.synvo.ai/ai/query",
data={
"payload": json.dumps(payload),
"model": "synvo",
"force_search": "true"
},
headers={"X-API-Key": api_key}
)
result = response.json()
# Print top 3 related factsed facts
k = 3
facts = result["content"][0]["facts"][:k]
for i, fact in enumerate(facts, 1):
print(f"\n--- Fact {i} ---")
print(f"Chunk: {fact['chunk']}...")
print(f"Reference: {fact['reference']}")Question: "What is the answer to the in-video quiz in Andrew's lecture?"
Expected Answer: a_2^3 = g(\Omega_2^3 \cdot a^2 + b_2^3)
import requests
import json
import os
api_key = os.getenv("SYNVO_API_KEY")
payload = {
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "What is the answer to the in-video quiz in Andrew's lecture?"}
]
}]
}
response = requests.post(
"https://api.synvo.ai/ai/query",
data={
"payload": json.dumps(payload),
"model": "synvo",
"force_search": "true"
},
headers={"X-API-Key": api_key}
)
result = response.json()
# Print top 3 related facts
k = 3
facts = result["content"][0]["facts"][:k]
for i, fact in enumerate(facts, 1):
print(f"\n--- Fact {i} ---")
print(f"Chunk: {fact['chunk']}...")
print(f"Reference: {fact['reference']}")Question: "In the lecture about the operating profit margin formula, what is the value of EBIT used in the example calculation for the year 2018?"
Expected Answer: EBIT = $8 million
import requests
import json
import os
api_key = os.getenv("SYNVO_API_KEY")
payload = {
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "In the lecture about the operating profit margin formula, what is the value of EBIT used in the example calculation for the year 2018?"}
]
}]
}
response = requests.post(
"https://api.synvo.ai/ai/query",
data={
"payload": json.dumps(payload),
"model": "synvo",
"force_search": "true"
},
headers={"X-API-Key": api_key}
)
result = response.json()
# Print top 3 related facts
k = 3
facts = result["content"][0]["facts"][:k]
for i, fact in enumerate(facts, 1):
print(f"\n--- Fact {i} ---")
print(f"Chunk: {fact['chunk']}...")
print(f"Reference: {fact['reference']}")cURL
Question: "How many patents did NTU file in FY2023?"
Expected Answer: 672
curl -X POST "https://api.synvo.ai/ai/query" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F 'payload={"messages":[{"role":"user","content":[{"type":"text","text":"How many patents did NTU file in FY2023?"}]}]}' \
-F "model=synvo" \
-F "force_search=true"Question: "When is the WellFest Finale event and where is it located?"
Expected Answer: 23rd October 2025 (Thursday), 11am to 4pm, Nanyang Auditorium Foyer
curl -X POST "https://api.synvo.ai/ai/query" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F 'payload={"messages":[{"role":"user","content":[{"type":"text","text":"When is the WellFest Finale event and where is it located?"}]}]}' \
-F "model=synvo" \
-F "force_search=true"Question: "What is the answer to the in-video quiz in Andrew's lecture?"
Expected Answer: a_2^3 = g(\Omega_2^3 \cdot a^2 + b_2^3)
curl -X POST "https://api.synvo.ai/ai/query" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F 'payload={"messages":[{"role":"user","content":[{"type":"text","text":"What is the answer to the in-video quiz in Andrew'\''s lecture?"}]}]}' \
-F "model=synvo" \
-F "force_search=true"Question: "In the lecture about the operating profit margin formula, what is the value of EBIT used in the example calculation for the year 2018?"
Expected Answer: EBIT = $8 million
curl -X POST "https://api.synvo.ai/ai/query" \
-H "X-API-Key: $SYNVO_API_KEY" \
-F 'payload={"messages":[{"role":"user","content":[{"type":"text","text":"In the lecture about the operating profit margin formula, what is the value of EBIT used in the example calculation for the year 2018?"}]}]}' \
-F "model=synvo" \
-F "force_search=true"Note
Large File Processing
- The 8-min demo video file may take 10 seconds to process, larger video file may take more time to process.
- Check processing status with
/file/status/{file_id}
File Format Support
- Images: .png, .jpg, .jpeg, .gif, .webp
- Video: .mp4, .mov, .m4v, .avi, .mkv
- Audio: .mp3, .wav, .m4a, .aac, .flac
- Documents: .pdf, .docx, .ppt, .pptx, .txt, .json, .jsonl, .xlsx
