Table of Contents [expand]
Last updated February 09, 2026
Chat models generate conversational completions for input messages. This guide walks you through how to use the /v1/chat/completions API with JavaScript.
Prerequisites
Before making requests, provision access to the model of your choice.
Attach an inference addon to an app of yours:
# If you don't have an app yet, you can create one with: heroku create $APP_NAME # specify the name you want for your app (or skip this step to use an existing app you have) # Create and attach one of our chat models to your app, $APP_NAME: heroku addons:create heroku-inference:standard -a $APP_NAME --as INFERENCEInstall the necessary
axiospackage:npm install axios
JavaScript Example Code
const axios = require('axios');
// Assert that environment variables are set
const INFERENCE_URL = process.env.INFERENCE_URL;
const INFERENCE_KEY = process.env.INFERENCE_KEY;
if (!INFERENCE_URL || !INFERENCE_KEY) {
console.error("Missing required environment variables.");
console.log("Set them up using the following commands:");
console.log("export INFERENCE_URL=$(heroku config:get -a $APP_NAME INFERENCE_URL)");
console.log("export INFERENCE_KEY=$(heroku config:get -a $APP_NAME INFERENCE_KEY)");
process.exit(1);
}
async function parseChatOutput(response) {
if (response.status === 200) {
console.log("Chat Completion:", response.data.choices[0].message.content);
} else {
console.log(`Request failed: ${response.status}, ${response.statusText}`);
}
}
async function generateChatCompletion(payload) {
try {
const response = await axios.post(`${INFERENCE_URL}/v1/chat/completions`, payload, {
headers: {
'Authorization': `Bearer ${INFERENCE_KEY}`,
'Content-Type': 'application/json'
}
});
await parseChatOutput(response);
} catch (error) {
console.error("Error generating chat completion:", error.message);
}
}
// Example payload
const payload = {
model: "claude-4-5-sonnet",
messages: [
{ role: "user", content: "Hello!" },
{ role: "assistant", content: "Hi there! How can I assist you today?" },
{ role: "user", content: "Why is Heroku so cool?" }
],
temperature: 0.5,
max_tokens: 100,
stream: false
};
// Generate chat completion
generateChatCompletion(payload);