Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const deflex = new DeflexClient({

// After
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e' // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm' // Free tier (60 requests/min)
})
```

Expand Down Expand Up @@ -162,8 +162,8 @@ DEFLEX_API_KEY=your-api-key
VITE_DEFLEX_API_KEY=your-api-key

# After
HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e
VITE_HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e
HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm
VITE_HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm
```

## No Functional Changes
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ const { activeAddress, transactionSigner } = useWallet()

// Initialize client
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
})

// Get quote
Expand Down
4 changes: 2 additions & 2 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,13 +102,13 @@ Each example includes a `.env.example` file with the free tier API key pre-confi
### React / React Query

```bash
VITE_HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e # Free tier (60 requests/min)
VITE_HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm # Free tier (60 requests/min)
```

### Node.js CLI

```bash
HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e # Free tier (60 requests/min)
HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm # Free tier (60 requests/min)
ACCOUNT_MNEMONIC="your 25 word mnemonic phrase"
```

Expand Down
2 changes: 1 addition & 1 deletion examples/node-cli/.env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Haystack Router API Configuration - Free tier (60 requests/min)
HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e
HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm

# Algorand Account Mnemonic (25 words)
# WARNING: Never commit this file with your real mnemonic!
Expand Down
2 changes: 1 addition & 1 deletion examples/node-cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cp .env.example .env

```env
# Haystack Router API key - Free tier (60 requests/min)
HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e
HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm

# Required: Your 25-word account mnemonic
# WARNING: Keep this file private and never commit it!
Expand Down
2 changes: 1 addition & 1 deletion examples/react-query/.env.example
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VITE_HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e
VITE_HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm
2 changes: 1 addition & 1 deletion examples/react/.env.example
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VITE_HAYSTACK_ROUTER_API_KEY=1b72df7e-1131-4449-8ce1-29b79dd3f51e
VITE_HAYSTACK_ROUTER_API_KEY=hay_pk_4zhj33wahuxfplteyif5xpcgnm
2 changes: 1 addition & 1 deletion packages/haystack/MIDDLEWARE.md
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ const middleware = new CustomAssetMiddleware({
})

const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
middleware: [middleware],
})

Expand Down
18 changes: 10 additions & 8 deletions packages/haystack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ TypeScript/JavaScript SDK for [Haystack Order Router](https://txnlab.gitbook.io/

| Tier | Key | Rate Limit | Use Case |
| --- | --- | --- | --- |
| **Free** | `1b72df7e-1131-4449-8ce1-29b79dd3f51e` | 60 requests/min | Development, testing, low-volume integrations |
| **Free** | `hay_pk_4zhj33wahuxfplteyif5xpcgnm` | 60 requests/min | Development, testing, low-volume integrations |
| **Production** | Request from [support@txnlab.dev](mailto:support@txnlab.dev) | Higher limits | Production applications |

The previous free key, `1b72df7e-1131-4449-8ce1-29b79dd3f51e`, is deprecated: its limit falls to 10 requests/min between December 1, 2026 and March 1, 2027, and it stops working on April 1, 2027.

The SDK sends the key in the `X-API-Key` header, never in the URL, so it stays out of server logs, browser history and caches.

## Installation
Expand All @@ -40,7 +42,7 @@ const { activeAddress, transactionSigner } = useWallet()

// Initialize the client
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
})

// Get a quote
Expand Down Expand Up @@ -72,12 +74,12 @@ import { RouterClient } from '@txnlab/haystack-router'

// Basic initialization
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
})

// Custom Algod configuration
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
algodUri: 'https://mainnet-api.4160.nodely.dev/',
algodToken: '',
algodPort: 443,
Expand All @@ -86,7 +88,7 @@ const router = new RouterClient({

// Earn fees with the referral program
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
referrerAddress: 'YOUR_ALGORAND_ADDRESS', // Earns 25% of swap fees
feeBps: 15, // 0.15% fee (max: 300 = 3%)
})
Expand Down Expand Up @@ -332,7 +334,7 @@ const myAsset = new MyAssetMiddleware({

// Pass middleware to RouterClient
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
middleware: [myAsset], // Middleware is applied automatically
})

Expand Down Expand Up @@ -360,7 +362,7 @@ const autoOptOut = new AutoOptOutMiddleware({
})

const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
middleware: [autoOptOut],
})

Expand All @@ -381,7 +383,7 @@ If you're not using `autoOptIn: true`, you can manually check if opt-in is neede

```typescript
const router = new RouterClient({
apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
autoOptIn: false, // Default if not provided
})

Expand Down
4 changes: 2 additions & 2 deletions packages/haystack/src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ import type {
* @example
* ```typescript
* const router = new RouterClient({
* apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
* apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
* })
* ```
*
* @example
* ```typescript
* const router = new RouterClient({
* apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
* apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
* apiBaseUrl: 'https://hayrouter.txnlab.dev',
* algodUri: 'https://mainnet-api.4160.nodely.dev/',
* algodToken: '',
Expand Down
2 changes: 1 addition & 1 deletion packages/haystack/src/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ export interface AutoOptOutConfig {
* })
*
* const router = new RouterClient({
* apiKey: '1b72df7e-1131-4449-8ce1-29b79dd3f51e', // Free tier (60 requests/min)
* apiKey: 'hay_pk_4zhj33wahuxfplteyif5xpcgnm', // Free tier (60 requests/min)
* middleware: [autoOptOut],
* })
*
Expand Down
Loading