GitHub
https://github.com/Vizlook/vizlook-pythonInstall SDK
Bash
Copy
pip install vizlook
Synchronous Client
Get Your Vizlook API Key
Sign up and receive $5 free credit.
api_key
, the SDK will get API key from environment variable VIZLOOK_API_KEY
by default.
Search
Python
Copy
from vizlook import Vizlook
import os
from datetime import datetime
vizlook = Vizlook(api_key=os.environ.get("VIZLOOK_API_KEY"))
response = vizlook.search(
"how to be productive",
max_results=5,
start_published_date="2025-08-19T15:01:36.000Z",
end_published_date=int(datetime.now().timestamp() * 1000),
include_transcription=True,
include_summary=True,
)
print("Dict with original API field name: ", response.to_dict())
print("Dict with snake case field name: ", response.to_dict(use_api_field_name=False))
print("Get value with snake case key from pydantic model: ", response.results)
Answer
Answer in non-stream mode.Python
Copy
from vizlook import Vizlook
import os
vizlook = Vizlook(api_key=os.environ.get("VIZLOOK_API_KEY"))
response = vizlook.answer(
"how to be productive",
include_transcription=True,
)
print("Dict with original API field name: ", response.to_dict())
print("Dict with snake case field name: ", response.to_dict(use_api_field_name=False))
print("Get value with snake case key from pydantic model: ", response.answer)
Python
Copy
from vizlook import Vizlook
import os
vizlook = Vizlook(api_key=os.environ.get("VIZLOOK_API_KEY"))
stream_response = vizlook.stream_answer(
"how to be productive",
include_transcription=True,
)
answer = ""
for chunk in stream_response:
# Dict with original API field name, or `chunk.to_dict(use_api_field_name=False)` get dict with snake case field name
chunk_dict = chunk.to_dict()
chunk_type = chunk_dict.get("type")
if chunk_type == "answer-chunk":
answer += chunk_dict.get("data", "")
if chunk_type == "data-citations":
print("Citations: ", chunk_dict.get("data").get("citations"))
if chunk_type == "data-cost":
print("Cost: ", chunk_dict.get("data").get("dollarCost"))
if chunk_type == "error":
print("Error: ", chunk_dict.get("data").get("errorText"))
print("Answer: ", answer)
Get video contents
Python
Copy
from vizlook import Vizlook
import os
vizlook = Vizlook(api_key=os.environ.get("VIZLOOK_API_KEY"))
response = vizlook.get_video_contents(
["https://www.youtube.com/watch?v=QdBokRd2ahw"],
crawl_mode="Fallback",
include_transcription=True,
include_summary=True,
)
print("Dict with original API field name: ", response.to_dict())
print("Dict with snake case field name: ", response.to_dict(use_api_field_name=False))
print("Get value with snake case key from pydantic model: ", response.results)
Asynchronous Client
Python
Copy
from vizlook import AsyncVizlook
import os
async def run_examples():
vizlook = AsyncVizlook(api_key=os.environ.get("VIZLOOK_API_KEY"))
print("============= non stream =============")
response = await vizlook.answer(
"how to be productive",
include_transcription=True,
)
print("Dict with original API field name: ", response.to_dict())
print("Dict with snake case field name: ", response.to_dict(use_api_field_name=False))
print("Get value with snake case key from pydantic model: ", response.answer)
print("============= stream =============")
stream_response = await vizlook.stream_answer(
"how to be productive",
include_transcription=True,
)
answer = ""
async for chunk in stream_response:
# Dict with original field name
chunk_dict = chunk.to_dict()
chunk_type = chunk_dict.get("type")
if chunk_type == "answer-chunk":
answer += chunk_dict.get("data", "")
if chunk_type == "data-citations":
print("Citations: ", chunk_dict.get("data").get("citations"))
if chunk_type == "data-cost":
print("Cost: ", chunk_dict.get("data").get("dollarCost"))
if chunk_type == "error":
print("Error: ", chunk_dict.get("data").get("errorText"))
print("Answer: ", answer)
if __name__ == "__main__":
import asyncio
asyncio.run(run_examples())