UNPKG

@goperigon/perigon-ts

Version:
211 lines (155 loc) β€’ 6.29 kB
<!-- ---------- Header ---------- --> <p align="center"> <img src="https://goperigon.com/favicon.ico" width="120" alt="Perigon logo" /> </p> <h1 align="center">Perigon&nbsp;TypeScript&nbsp;SDK</h1> <p align="center">TypeScript client for the <strong>Perigon&nbsp;API</strong></p> <!-- ---------- Badges ---------- --> <p align="center"> <!-- npm --> <a href="https://www.npmjs.com/package/@goperigon/perigon-ts"> <img src="https://img.shields.io/npm/v/@goperigon/perigon-ts?style=for-the-badge" alt="npm version"> </a> <!-- tests --> <a href="https://github.com/goperigon/perigon-ts/actions/workflows/test.yml"> <img src="https://img.shields.io/github/actions/workflow/status/goperigon/perigon-ts/test.yml?label=tests%20%E2%9C%85&style=for-the-badge" alt="tests status"> </a> <!-- docs --> <a href="https://docs.perigon.io"> <img src="https://img.shields.io/badge/docs-perigon.io-informational?style=for-the-badge&logo=readthedocs" alt="documentation"> </a> <!-- license --> <a href="LICENSE"> <img src="https://img.shields.io/github/license/goperigon/perigon-ts?style=for-the-badge" alt="license"> </a> </p> A fully-typed, promise-based SDK generated from the official Perigon OpenAPI specification. Works in Node.js, modern browsers, Cloudflare Workers, and Deno. ## Table&nbsp;of&nbsp;Contents <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> - [✨ Features](#-features) - [πŸ“¦ Installation](#-installation) - [πŸš€ Quick start](#-quick-start) - [πŸ§‘β€πŸ’» Endpoint snippets](#-endpoint-snippets) - [πŸͺͺ License](#-license) <!-- END doctoc generated TOC please keep comment here to allow auto update --> --- ## ✨ Features - **Type-safe** request/response models (goodbye `any`) - Ships as both **ESM & CommonJS** with sourcemaps - **Zero-dependency core** – bring your own `fetch` if needed - Generated directly from [docs.perigon.io](https://docs.perigon.io), so it’s always in sync - Runs in **Node, browsers, Deno, and edge runtimes** --- ## πŸ“¦ Installation ```bash npm install @goperigon/perigon-ts # yarn add @goperigon/perigon-ts # pnpm add @goperigon/perigon-ts ``` --- ## πŸš€ Quick start ### 1. Instantiate the client ```ts import { Configuration, V1Api } from "@goperigon/perigon-ts"; const perigon = new V1Api( new Configuration({ apiKey: "YOUR_API_KEY", // or () => 'your_key' // basePath: 'https://api.perigon.io', // override for proxy / dev }), ); ``` ### 2. Make calls ```ts // πŸ” Search recent news articles const { articles, numResults } = await perigon.searchArticles({ q: "artificial intelligence", size: 5, }); console.log(numResults, articles[0].title); // πŸ‘€ Look up a journalist by ID const journalist = await perigon.getJournalistById({ id: "123456" }); console.log(journalist.name); ``` > All SDK methods return **typed promises** with full IntelliSense support. --- ## πŸ§‘β€πŸ’» Endpoint snippets ### Articles – search and filter news (`/v1/all`)<br> **Docs β†’** <https://docs.perigon.io/docs/overview> ```ts const { articles } = await perigon.searchArticles({ q: "technology", size: 5, }); ``` ### Articles – date range filter<br> **Docs β†’** <https://docs.perigon.io/docs/overview> ```ts await perigon.searchArticles({ q: "business", from: "2025-04-01", to: "2025-04-08", }); ``` ### Articles – restrict to a source<br> **Docs β†’** <https://docs.perigon.io/docs/overview> ```ts await perigon.searchArticles({ source: ["nytimes.com"] }); ``` ### Companies – fetch structured company data (`/v1/companies`)<br> **Docs β†’** <https://docs.perigon.io/docs/company-data> ```ts const { results } = await perigon.searchCompanies({ name: "Apple", size: 5, }); ``` ### Journalists – search and detail look‑up (`/v1/journalists`)<br> **Docs β†’** <https://docs.perigon.io/docs/journalist-data> ```ts const { results } = await perigon.searchJournalists1({ name: "Kevin", size: 1, }); const journalist = await perigon.getJournalistById({ id: results[0].id }); ``` ### Stories – discover related article clusters (`/v1/stories`)<br> **Docs β†’** <https://docs.perigon.io/docs/stories-overview> ```ts await perigon.searchStories({ q: "climate change", size: 5 }); ``` ### Vector search – semantic retrieval (`/v1/vector`)<br> **Docs β†’** <https://docs.perigon.io/docs/vector-endpoint> ```ts await perigon.vectorSearchArticles({ articleSearchParams: { prompt: "Latest advancements in artificial intelligence", size: 5, }, }); ``` ### Summarizer – generate an instant summary (`/v1/summarizer`)<br> **Docs β†’** <https://docs.perigon.io/docs/search-summarizer> ```ts const { summary } = await perigon.searchSummarizer({ q: "renewable energy", size: 10, }); console.log(summary); ``` ### Topics – explore taxonomy (`/v1/topics`)<br> **Docs β†’** <https://docs.perigon.io/docs/topics> ```ts await perigon.searchTopics({ size: 10 }); ``` | Action | Code Example | | --------------------------------------- | ------------------------------------------------------------------------------------------------------- | | Filter by source | `await perigon.searchArticles({ source: ['nytimes.com'] })` | | Limit by date range | `await perigon.searchArticles({ q: 'business', from: '2025‑04‑01', to: '2025‑04‑08' })` | | Company lookup | `await perigon.searchCompanies({ name: 'Apple', size: 5 })` | | Summarize any query | `await perigon.searchSummarizer({ q: 'renewable energy', size: 20 })` | | Semantic / vector search | `await perigon.vectorSearchArticles({ articleSearchParams: { prompt: 'advancements in AI', size: 5 }})` | | Retrieve available taxonomic **topics** | `await perigon.searchTopics({ size: 10 })` | --- ## πŸͺͺ License MIT Β© Perigon