@messari/sdk
Version:
Messari SDK provides a type-safe, intuitive interface for accessing Messari's suite of crypto data and AI APIs.
99 lines (78 loc) • 2.72 kB
Markdown
# Messari SDK
Messari Typescript SDK is a convenient way to interact with Messari's APIs. It provides a type-safe, intuitive interface for accessing Messari's suite of crypto data and AI services.
## Features
- 🔒 **Type-safe**: Full TypeScript support with automatically generated types from OpenAPI specs
- 🚀 **Modern**: Built with modern TypeScript features and best practices
- 📚 **Well-documented**: Comprehensive documentation and examples
- 🔄 **Auto-generated**: API types and operations are automatically generated from OpenAPI specifications
- 🛠 **Developer-friendly**: Intuitive API design with built-in error handling
## Installation
```bash
# Using pnpm
pnpm add @messari/sdk
```
## Authorization
To use the SDK, you'll need a Messari API key. See our [docs](https://docs.messari.io/reference/introduction) for more information.
## API Services
| Service | Endpoint | Route |
|--------------|---------------|----------------|
| AI | Chat Completion | `/ai/v1/chat/completions` |
| AI | Entity Extraction | `/ai/v1/classification/extraction` |
## Example Usage
For full examples, see the [Example Docs](https://docs.messari.io/recipes) or the [Examples Repo](https://github.com/messari/MessariKit/tree/master/packages/examples/src).
### AI Service
```typescript
import { MessariClient } from '@messari/sdk';
// Initialize the client
const client = new MessariClient({ apiKey: 'your-api-key' });
// Use the AI service
const response = await client.ai.createChatCompletion({
messages: [
{
role: "user",
content: "What companies have both paradigm and a16z on their cap table?",
},
],
});
const assistantMessage = response.messages[0].content;
console.log(assistantMessage);
// The following companies have both Paradigm and a16z on their cap table:
// 1. OpenSea
// 2. Optimism
// 3. Phantom Wallet
// 4. Farcaster
// 5. Uniswap
// ...
// Extract entities from text
const entitiesResp = await client.ai.extractEntities({
content: "Ethereum founder Vitalik Buterin announced...",
entityTypes: ["person", "project"],
});
for (const entity of entitiesResp.extractedEntities) {
if (entity.selectedEntity) {
console.log(JSON.stringify(entity.selectedEntity, null, 2));
}
}
// {
// "name": "Ethereum",
// "details": [
// {
// "id": "263d8b01-5a96-41f0-85d5-09687bbbf7ca",
// "type": "PROJECT"
// }
// ],
// "confidenceScore": "HIGH",
// "relevanceScore": "HIGH"
// }
// {
// "name": "Vitalik Buterin",
// "details": [
// {
// "id": "77b6685d-fafa-4be2-8e79-563c438a880a",
// "type": "PERSON"
// }
// ],
// "confidenceScore": "HIGH",
// "relevanceScore": "HIGH"
// }
```