Skip to content

Repository files navigation

Perigon logo

Perigon Python SDK

Python client for the Perigon API

pypi versionpython versionspypi downloadstests statusdocumentationlicense

A modern, fully‑typed Python SDK for the Perigon API, generated from the official OpenAPI specification.
Works in CPython 3.8+, PyPy, serverless runtimes, notebooks, and async frameworks.

Table of Contents


✨ Features

  • Type‑hinted request/response models powered by Pydantic
  • Async and sync support - choose the right approach for your application
  • Ships with PEP 561 type hints for excellent IDE integration
  • Generated directly from https://docs.perigon.io, so it's always in sync

📦 Installation

pip install perigon
# poetry add perigon# pipx install perigon

🚀 Quick start

1. Instantiate the client

fromperigonimportV1Api, ApiClient# Create client with API keyapi=V1Api(ApiClient(api_key="YOUR_API_KEY"))
# Alternative: environment variable or callable# api = V1Api(ApiClient(api_key=os.environ["PERIGON_API_KEY"]))# api = V1Api(ApiClient(api_key=lambda: get_api_key_from_vault()))

2. Make calls

# 🔍 Search recent news articles (sync)articles=api.search_articles(q="artificial intelligence", size=5)
print(articles.num_results, articles.articles[0].title)
# 👤 Look up a journalist by ID (sync)journalist=api.get_journalist_by_id(id="123456")
print(journalist.name)
# 🔄 Use async variant for async applicationsimportasyncioasyncdeffetch_data():
# Search articles asynchronously articles=awaitapi.search_articles_async(q="technology", size=5)
# Look up journalist asynchronouslyjournalist=awaitapi.get_journalist_by_id_async(id="123456")
returnarticles, journalist# Run in async contextarticles, journalist=asyncio.run(fetch_data())

All methods return typed objects with full IDE autocompletion support.


🧑‍💻 Endpoint examples

Articles – search and filter news (/v1/all)

Docs →https://docs.perigon.io/docs/overview

# Simple queryarticles=api.search_articles(q="technology", size=5)
# With date rangearticles=api.search_articles(
q="business", var_from="2025-04-01", # Note: 'from' is a reserved keyword in Pythonto="2025-04-08"
)
# Restrict to specific sourcesarticles=api.search_articles(source=["nytimes.com"])

Companies – fetch structured company data (/v1/companies)

Docs →https://docs.perigon.io/docs/company-data

results=api.search_companies(name="Apple", size=5)

Journalists – search and detail look‑up (/v1/journalists)

Docs →https://docs.perigon.io/docs/journalist-data

# Search for journalistsresults=api.search_journalists1(name="Kevin", size=1)
# Get detailed informationjournalist=api.get_journalist_by_id(id=results.journalists[0].id)

Stories – discover related article clusters (/v1/stories)

Docs →https://docs.perigon.io/docs/stories-overview

stories=api.search_stories(q="climate change", size=5)

Vector search – semantic retrieval (/v1/vector)

Docs →https://docs.perigon.io/docs/vector-endpoint

fromperigon.models.article_search_paramsimportArticleSearchParamsresults=api.vector_search_articles(
article_search_params=ArticleSearchParams(
prompt="Latest advancements in artificial intelligence",
size=5
)
)

Summarizer – generate an instant summary (/v1/summarizer)

Docs →https://docs.perigon.io/docs/search-summarizer

fromperigon.models.summary_bodyimportSummaryBodysummary=api.search_summarizer(
summary_body=SummaryBody(prompt="Key developments"),
q="renewable energy", size=10
).summaryprint(summary)

Topics – explore taxonomy (/v1/topics)

Docs →https://docs.perigon.io/docs/topics

topics=api.search_topics(size=10)

Wikipedia – search and filter pages (/v1/wikipedia)

Docs →https://docs.perigon.io/docs/wikipedia

# Search Wikipedia pageswikipedia_result=api.search_wikipedia(
q="machine learning",
size=3,
sort_by="relevance"
)
# Filter by specific criteriawikipedia_result=api.search_wikipedia(
q="artificial intelligence",
pageviews_from=100, # Only popular pages
)

Wikipedia vector search – semantic retrieval (/v1/vector/wikipedia)

Docs →https://docs.perigon.io/docs/vector-wikipedia

fromperigon.models.wikipedia_search_paramsimportWikipediaSearchParamsresults=api.vector_search_wikipedia(
wikipedia_search_params=WikipediaSearchParams(
prompt="artificial intelligence and neural networks in computing",
size=3,
pageviews_from=100
)
)
ActionCode Example
Filter by sourceapi.search_articles(source=["nytimes.com"])
Limit by date rangeapi.search_articles(q="business", var_from="2025-04-01", to="2025-04-08")
Company lookupapi.search_companies(name="Apple", size=5)
Summarize any queryapi.search_summarizer(summary_body=SummaryBody(prompt="Key points"), q="renewable energy", size=20)
Semantic / vector searchapi.vector_search_articles(article_search_params=ArticleSearchParams(prompt="advancements in AI", size=5))
Retrieve available taxonomic topicsapi.search_topics(size=10)
Search Wikipedia pagesapi.search_wikipedia(q="machine learning", size=3, sort_by="relevance")
Wikipedia semantic searchapi.vector_search_wikipedia(wikipedia_search_params=WikipediaSearchParams(prompt="artificial intelligence", size=3))

🔄 Async Support

All methods have async counterparts with the _async suffix:

importasynciofromperigonimportV1Api, ApiClientasyncdefmain():
api=V1Api(ApiClient(api_key="YOUR_API_KEY"))
# Concurrent API callsarticles_task=api.search_articles_async(q="technology", size=5)
journalist_task=api.get_journalist_by_id_async(id="123456")
# Gather resultsarticles, journalist=awaitasyncio.gather(articles_task, journalist_task)
returnarticles, journalist# Run the async functionarticles, journalist=asyncio.run(main())

🪪 License

MIT © Perigon

About

Perigon Python SDK generated with openapi-generator

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages