Skip to content

Node.js Examples

These examples use the built-in fetch API (Node.js 18+) and fs module — no extra dependencies required.

Replace YOUR_PRODUCT_SLUG and YOUR_API_KEY with the values from your administrator.

const BASE_URL = process.env.ILLUSTRATA_BASE_URL // e.g., 'https://api.illustrata.io'
const PRODUCT_SLUG = process.env.ILLUSTRATA_PRODUCT // e.g., 'my-annuity'
const API_KEY = process.env.ILLUSTRATA_API_KEY // e.g., 'ila_...'
async function getIllustrationData(inputs) {
const response = await fetch(`${BASE_URL}/api/${PRODUCT_SLUG}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ inputs }),
})
if (!response.ok) {
const error = await response.json()
throw new Error(`API error ${response.status}: ${error.error}`)
}
const data = await response.json()
return data.response_data.outputs
}
// Usage
const outputs = await getIllustrationData({
field1: 'value1',
field2: 100000,
})
console.log(outputs)
import { writeFileSync } from 'fs'
async function downloadIllustrationPDF(inputs, outputPath = 'illustration.pdf') {
const response = await fetch(`${BASE_URL}/api/${PRODUCT_SLUG}?format=pdf`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ inputs }),
})
if (!response.ok) {
const error = await response.json()
throw new Error(`API error ${response.status}: ${error.error}`)
}
const buffer = await response.arrayBuffer()
writeFileSync(outputPath, Buffer.from(buffer))
console.log(`PDF saved to ${outputPath}`)
}
// Usage
await downloadIllustrationPDF({ field1: 'value1', field2: 100000 })
import { writeFileSync } from 'fs'
async function getIllustrationWithPDF(inputs) {
const response = await fetch(`${BASE_URL}/api/${PRODUCT_SLUG}?format=both`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ inputs }),
})
if (!response.ok) {
const error = await response.json()
throw new Error(`API error ${response.status}: ${error.error}`)
}
const data = await response.json()
// Save PDF from base64
if (data.pdf) {
const pdfBuffer = Buffer.from(data.pdf.data, 'base64')
writeFileSync(data.pdf.fileName, pdfBuffer)
console.log(`PDF saved: ${data.pdf.fileName} (${data.pdf.pageCount} pages)`)
}
return data.response_data.outputs
}
async function callWithRateLimitCheck(inputs) {
const response = await fetch(`${BASE_URL}/api/${PRODUCT_SLUG}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ inputs }),
})
const remaining = response.headers.get('X-RateLimit-Remaining')
const dailyRemaining = response.headers.get('X-RateLimit-Daily-Remaining')
console.log(`Requests remaining: ${remaining}/min, ${dailyRemaining}/day`)
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After')
console.log(`Rate limited. Retry after ${retryAfter} seconds.`)
return null
}
return response.json()
}
async function checkHealth() {
const response = await fetch(`${BASE_URL}/health`)
const data = await response.json()
return data.status === 'ok'
}