Extract clean markdown content from a list of URLs.
response = client.extract.extract( urls=[ "https://docs.octen.ai/api-reference/search", "https://www.who.int/news-room/fact-sheets/detail/influenza-(seasonal)", ])for result in response.data.results: if result.status == "success": print(result.title, result.full_content[:200])
With query for intent-focused highlights:
response = client.extract.extract( urls=["https://www.who.int/news-room/fact-sheets/detail/influenza-(seasonal)"], query="vaccination guidelines")for result in response.data.results: if result.status == "success": for highlight in result.highlights: print(highlight)
With multimedia resources:
response = client.extract.extract( urls=["https://example.com/article"], include_images=True, include_videos=True, include_favicon=True)for result in response.data.results: if result.status == "success": for image in result.images: print(image.url)
Handle failures and check billing:
response = client.extract.extract(urls=[ "https://docs.octen.ai/api-reference/search", "https://example.com/non-existent",])for result in response.data.results: if result.status == "success": print(f"[OK] {result.url}") else: print(f"[FAIL] {result.url}: {result.error_message}")# Only successful URLs are billedprint(f"Billed: {response.meta.usage.successful_urls}/{response.meta.usage.total_urls}")
Send messages to LLMs with optional web search and streaming.
from octen import ChatMessageresponse = client.chat.create( model="openai/gpt-5.4", messages=[ChatMessage(role="user", content="What is quantum computing?")])print(response.text)
Multi-turn conversation:
response = client.chat.create( model="openai/gpt-5.4", messages=[ ChatMessage(role="system", content="You are a helpful assistant."), ChatMessage(role="user", content="What is Python?"), ChatMessage(role="assistant", content="Python is a programming language."), ChatMessage(role="user", content="What are its main use cases?"), ])
With web search:
response = client.chat.create( model="openai/gpt-5.4", messages=[ChatMessage(role="user", content="Latest AI news today")], web_search="on")print(response.text)print(response.search_results)print(response.citations)
from octen import ChatMessageasync with AsyncOcten(api_key="your-api-key") as client: search_result, embed_result, chat_result = await asyncio.gather( client.search.search(query="AI news", count=5), client.embedding.create(input="Hello world"), client.chat.create( model="openai/gpt-5.4", messages=[ChatMessage(role="user", content="Hello!")] ) )
Async streaming:
async with AsyncOcten(api_key="your-api-key") as client: stream = await client.chat.create( model="openai/gpt-5.4", messages=[ChatMessage(role="user", content="Tell me a story")], stream=True ) async for event in stream: if event.type == "content": print(event.choices[0].delta.content or "", end="", flush=True)