Skip to main content

Perigon API

Project description

Perigon logo

Perigon Python SDK

Python client for the Perigon API

pypi version python versions pypi downloads tests status documentation license

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

from perigon import V1Api, ApiClient

# Create client with API key
api = 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 applications
import asyncio

async def fetch_data():
    # Search articles asynchronously 
    articles = await api.search_articles_async(q="technology", size=5)
    
    # Look up journalist asynchronously
    journalist = await api.get_journalist_by_id_async(id="123456")
    
    return articles, journalist

# Run in async context
articles, 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 query
articles = api.search_articles(q="technology", size=5)

# With date range
articles = api.search_articles(
    q="business", 
    var_from="2025-04-01",  # Note: 'from' is a reserved keyword in Python
    to="2025-04-08"
)

# Restrict to specific sources
articles = 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 journalists
results = api.search_journalists1(name="Kevin", size=1)

# Get detailed information
journalist = 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

from perigon.models.article_search_params import ArticleSearchParams

results = 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

from perigon.models.summary_body import SummaryBody

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

print(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 pages
wikipedia_result = api.search_wikipedia(
    q="machine learning",
    size=3,
    sort_by="relevance"
)

# Filter by specific criteria
wikipedia_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

from perigon.models.wikipedia_search_params import WikipediaSearchParams

results = api.vector_search_wikipedia(
    wikipedia_search_params=WikipediaSearchParams(
        prompt="artificial intelligence and neural networks in computing",
        size=3,
        pageviews_from=100
    )
)
Action Code Example
Filter by source api.search_articles(source=["nytimes.com"])
Limit by date range api.search_articles(q="business", var_from="2025-04-01", to="2025-04-08")
Company lookup api.search_companies(name="Apple", size=5)
Summarize any query api.search_summarizer(summary_body=SummaryBody(prompt="Key points"), q="renewable energy", size=20)
Semantic / vector search api.vector_search_articles(article_search_params=ArticleSearchParams(prompt="advancements in AI", size=5))
Retrieve available taxonomic topics api.search_topics(size=10)
Search Wikipedia pages api.search_wikipedia(q="machine learning", size=3, sort_by="relevance")
Wikipedia semantic search api.vector_search_wikipedia(wikipedia_search_params=WikipediaSearchParams(prompt="artificial intelligence", size=3))

🔄 Async Support

All methods have async counterparts with the _async suffix:

import asyncio
from perigon import V1Api, ApiClient

async def main():
    api = V1Api(ApiClient(api_key="YOUR_API_KEY"))
    
    # Concurrent API calls
    articles_task = api.search_articles_async(q="technology", size=5)
    journalist_task = api.get_journalist_by_id_async(id="123456")
    
    # Gather results
    articles, journalist = await asyncio.gather(articles_task, journalist_task)
    
    return articles, journalist

# Run the async function
articles, journalist = asyncio.run(main())

🪪 License

MIT © Perigon

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

perigon-0.0.0.tar.gz (80.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

perigon-0.0.0-py3-none-any.whl (191.7 kB view details)

Uploaded Python 3

File details

Details for the file perigon-0.0.0.tar.gz.

File metadata

  • Download URL: perigon-0.0.0.tar.gz
  • Upload date:
  • Size: 80.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for perigon-0.0.0.tar.gz
Algorithm Hash digest
SHA256 a3e5883963c925f0d1b34fd15f5ccf9655e4f5112efc4efd6a193fec53ef11e2
MD5 a946e157d5ae716996189bd4756cb204
BLAKE2b-256 8d179aa5bd5316f5d290d86b701f884bdb8c9b407370ec97cf323bfbad5861d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for perigon-0.0.0.tar.gz:

Publisher: publish.yml on goperigon/perigon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file perigon-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: perigon-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 191.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for perigon-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f87d85b207739f5eb70bcf5e93a242831cebc4bb5ec6f19d142963d1ea55df48
MD5 c3e13010f62592078b4e65149b0c0718
BLAKE2b-256 fcecbb69253f4777f38b8d4143b811c0ab1bf7f02cab9b74718f66e018be8b98

See more details on using hashes here.

Provenance

The following attestation bundles were made for perigon-0.0.0-py3-none-any.whl:

Publisher: publish.yml on goperigon/perigon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page