curl --request POST \
--url https://api.heify.com/create-configuration \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"tag": "Customer Support - Technical Issues",
"vocabulary": [
"firewall",
"VPN",
"authentication"
],
"extraction_fields": [
{
"name": "ticket_id",
"type": "string",
"description": "The support ticket number mentioned in the conversation"
},
{
"name": "issue_resolved",
"type": "boolean",
"description": "Whether the technical issue was resolved during the call"
}
],
"webhooks": {
"success_url": "https://myservice.com/webhooks/transcription/success",
"error_url": "https://myservice.com/webhooks/transcription/error"
},
"summary": true,
"custom_summary": "Focus on the technical issue reported and the resolution steps taken.",
"summary_language": "en",
"analytics_language": "en"
}
'import requests
url = "https://api.heify.com/create-configuration"
payload = {
"tag": "Customer Support - Technical Issues",
"vocabulary": ["firewall", "VPN", "authentication"],
"extraction_fields": [
{
"name": "ticket_id",
"type": "string",
"description": "The support ticket number mentioned in the conversation"
},
{
"name": "issue_resolved",
"type": "boolean",
"description": "Whether the technical issue was resolved during the call"
}
],
"webhooks": {
"success_url": "https://myservice.com/webhooks/transcription/success",
"error_url": "https://myservice.com/webhooks/transcription/error"
},
"summary": True,
"custom_summary": "Focus on the technical issue reported and the resolution steps taken.",
"summary_language": "en",
"analytics_language": "en"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tag: 'Customer Support - Technical Issues',
vocabulary: ['firewall', 'VPN', 'authentication'],
extraction_fields: [
{
name: 'ticket_id',
type: 'string',
description: 'The support ticket number mentioned in the conversation'
},
{
name: 'issue_resolved',
type: 'boolean',
description: 'Whether the technical issue was resolved during the call'
}
],
webhooks: {
success_url: 'https://myservice.com/webhooks/transcription/success',
error_url: 'https://myservice.com/webhooks/transcription/error'
},
summary: true,
custom_summary: 'Focus on the technical issue reported and the resolution steps taken.',
summary_language: 'en',
analytics_language: 'en'
})
};
fetch('https://api.heify.com/create-configuration', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.heify.com/create-configuration",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'tag' => 'Customer Support - Technical Issues',
'vocabulary' => [
'firewall',
'VPN',
'authentication'
],
'extraction_fields' => [
[
'name' => 'ticket_id',
'type' => 'string',
'description' => 'The support ticket number mentioned in the conversation'
],
[
'name' => 'issue_resolved',
'type' => 'boolean',
'description' => 'Whether the technical issue was resolved during the call'
]
],
'webhooks' => [
'success_url' => 'https://myservice.com/webhooks/transcription/success',
'error_url' => 'https://myservice.com/webhooks/transcription/error'
],
'summary' => true,
'custom_summary' => 'Focus on the technical issue reported and the resolution steps taken.',
'summary_language' => 'en',
'analytics_language' => 'en'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.heify.com/create-configuration"
payload := strings.NewReader("{\n \"tag\": \"Customer Support - Technical Issues\",\n \"vocabulary\": [\n \"firewall\",\n \"VPN\",\n \"authentication\"\n ],\n \"extraction_fields\": [\n {\n \"name\": \"ticket_id\",\n \"type\": \"string\",\n \"description\": \"The support ticket number mentioned in the conversation\"\n },\n {\n \"name\": \"issue_resolved\",\n \"type\": \"boolean\",\n \"description\": \"Whether the technical issue was resolved during the call\"\n }\n ],\n \"webhooks\": {\n \"success_url\": \"https://myservice.com/webhooks/transcription/success\",\n \"error_url\": \"https://myservice.com/webhooks/transcription/error\"\n },\n \"summary\": true,\n \"custom_summary\": \"Focus on the technical issue reported and the resolution steps taken.\",\n \"summary_language\": \"en\",\n \"analytics_language\": \"en\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.heify.com/create-configuration")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"tag\": \"Customer Support - Technical Issues\",\n \"vocabulary\": [\n \"firewall\",\n \"VPN\",\n \"authentication\"\n ],\n \"extraction_fields\": [\n {\n \"name\": \"ticket_id\",\n \"type\": \"string\",\n \"description\": \"The support ticket number mentioned in the conversation\"\n },\n {\n \"name\": \"issue_resolved\",\n \"type\": \"boolean\",\n \"description\": \"Whether the technical issue was resolved during the call\"\n }\n ],\n \"webhooks\": {\n \"success_url\": \"https://myservice.com/webhooks/transcription/success\",\n \"error_url\": \"https://myservice.com/webhooks/transcription/error\"\n },\n \"summary\": true,\n \"custom_summary\": \"Focus on the technical issue reported and the resolution steps taken.\",\n \"summary_language\": \"en\",\n \"analytics_language\": \"en\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.heify.com/create-configuration")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tag\": \"Customer Support - Technical Issues\",\n \"vocabulary\": [\n \"firewall\",\n \"VPN\",\n \"authentication\"\n ],\n \"extraction_fields\": [\n {\n \"name\": \"ticket_id\",\n \"type\": \"string\",\n \"description\": \"The support ticket number mentioned in the conversation\"\n },\n {\n \"name\": \"issue_resolved\",\n \"type\": \"boolean\",\n \"description\": \"Whether the technical issue was resolved during the call\"\n }\n ],\n \"webhooks\": {\n \"success_url\": \"https://myservice.com/webhooks/transcription/success\",\n \"error_url\": \"https://myservice.com/webhooks/transcription/error\"\n },\n \"summary\": true,\n \"custom_summary\": \"Focus on the technical issue reported and the resolution steps taken.\",\n \"summary_language\": \"en\",\n \"analytics_language\": \"en\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"message": "Configuration created successfully",
"configuration_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}Create Configuration
Create a new configuration template that defines how audio/video files will be processed.
curl --request POST \
--url https://api.heify.com/create-configuration \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"tag": "Customer Support - Technical Issues",
"vocabulary": [
"firewall",
"VPN",
"authentication"
],
"extraction_fields": [
{
"name": "ticket_id",
"type": "string",
"description": "The support ticket number mentioned in the conversation"
},
{
"name": "issue_resolved",
"type": "boolean",
"description": "Whether the technical issue was resolved during the call"
}
],
"webhooks": {
"success_url": "https://myservice.com/webhooks/transcription/success",
"error_url": "https://myservice.com/webhooks/transcription/error"
},
"summary": true,
"custom_summary": "Focus on the technical issue reported and the resolution steps taken.",
"summary_language": "en",
"analytics_language": "en"
}
'import requests
url = "https://api.heify.com/create-configuration"
payload = {
"tag": "Customer Support - Technical Issues",
"vocabulary": ["firewall", "VPN", "authentication"],
"extraction_fields": [
{
"name": "ticket_id",
"type": "string",
"description": "The support ticket number mentioned in the conversation"
},
{
"name": "issue_resolved",
"type": "boolean",
"description": "Whether the technical issue was resolved during the call"
}
],
"webhooks": {
"success_url": "https://myservice.com/webhooks/transcription/success",
"error_url": "https://myservice.com/webhooks/transcription/error"
},
"summary": True,
"custom_summary": "Focus on the technical issue reported and the resolution steps taken.",
"summary_language": "en",
"analytics_language": "en"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tag: 'Customer Support - Technical Issues',
vocabulary: ['firewall', 'VPN', 'authentication'],
extraction_fields: [
{
name: 'ticket_id',
type: 'string',
description: 'The support ticket number mentioned in the conversation'
},
{
name: 'issue_resolved',
type: 'boolean',
description: 'Whether the technical issue was resolved during the call'
}
],
webhooks: {
success_url: 'https://myservice.com/webhooks/transcription/success',
error_url: 'https://myservice.com/webhooks/transcription/error'
},
summary: true,
custom_summary: 'Focus on the technical issue reported and the resolution steps taken.',
summary_language: 'en',
analytics_language: 'en'
})
};
fetch('https://api.heify.com/create-configuration', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.heify.com/create-configuration",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'tag' => 'Customer Support - Technical Issues',
'vocabulary' => [
'firewall',
'VPN',
'authentication'
],
'extraction_fields' => [
[
'name' => 'ticket_id',
'type' => 'string',
'description' => 'The support ticket number mentioned in the conversation'
],
[
'name' => 'issue_resolved',
'type' => 'boolean',
'description' => 'Whether the technical issue was resolved during the call'
]
],
'webhooks' => [
'success_url' => 'https://myservice.com/webhooks/transcription/success',
'error_url' => 'https://myservice.com/webhooks/transcription/error'
],
'summary' => true,
'custom_summary' => 'Focus on the technical issue reported and the resolution steps taken.',
'summary_language' => 'en',
'analytics_language' => 'en'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.heify.com/create-configuration"
payload := strings.NewReader("{\n \"tag\": \"Customer Support - Technical Issues\",\n \"vocabulary\": [\n \"firewall\",\n \"VPN\",\n \"authentication\"\n ],\n \"extraction_fields\": [\n {\n \"name\": \"ticket_id\",\n \"type\": \"string\",\n \"description\": \"The support ticket number mentioned in the conversation\"\n },\n {\n \"name\": \"issue_resolved\",\n \"type\": \"boolean\",\n \"description\": \"Whether the technical issue was resolved during the call\"\n }\n ],\n \"webhooks\": {\n \"success_url\": \"https://myservice.com/webhooks/transcription/success\",\n \"error_url\": \"https://myservice.com/webhooks/transcription/error\"\n },\n \"summary\": true,\n \"custom_summary\": \"Focus on the technical issue reported and the resolution steps taken.\",\n \"summary_language\": \"en\",\n \"analytics_language\": \"en\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.heify.com/create-configuration")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"tag\": \"Customer Support - Technical Issues\",\n \"vocabulary\": [\n \"firewall\",\n \"VPN\",\n \"authentication\"\n ],\n \"extraction_fields\": [\n {\n \"name\": \"ticket_id\",\n \"type\": \"string\",\n \"description\": \"The support ticket number mentioned in the conversation\"\n },\n {\n \"name\": \"issue_resolved\",\n \"type\": \"boolean\",\n \"description\": \"Whether the technical issue was resolved during the call\"\n }\n ],\n \"webhooks\": {\n \"success_url\": \"https://myservice.com/webhooks/transcription/success\",\n \"error_url\": \"https://myservice.com/webhooks/transcription/error\"\n },\n \"summary\": true,\n \"custom_summary\": \"Focus on the technical issue reported and the resolution steps taken.\",\n \"summary_language\": \"en\",\n \"analytics_language\": \"en\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.heify.com/create-configuration")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tag\": \"Customer Support - Technical Issues\",\n \"vocabulary\": [\n \"firewall\",\n \"VPN\",\n \"authentication\"\n ],\n \"extraction_fields\": [\n {\n \"name\": \"ticket_id\",\n \"type\": \"string\",\n \"description\": \"The support ticket number mentioned in the conversation\"\n },\n {\n \"name\": \"issue_resolved\",\n \"type\": \"boolean\",\n \"description\": \"Whether the technical issue was resolved during the call\"\n }\n ],\n \"webhooks\": {\n \"success_url\": \"https://myservice.com/webhooks/transcription/success\",\n \"error_url\": \"https://myservice.com/webhooks/transcription/error\"\n },\n \"summary\": true,\n \"custom_summary\": \"Focus on the technical issue reported and the resolution steps taken.\",\n \"summary_language\": \"en\",\n \"analytics_language\": \"en\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"message": "Configuration created successfully",
"configuration_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}tag is permanent — it cannot be changed after creation. Choose a clear, descriptive name.description on each extraction field, the more accurate the AI extraction will be. See Best Practices for Extraction Fields.Authorizations
Body
A descriptive name for the configuration (e.g., "Sales Call Analysis"). Permanent — cannot be changed after creation.
255Custom terms (brand names, acronyms, technical words) that improve transcription accuracy. Example: ["Heify", "NLP", "SLA"].
Structured data fields for the AI to extract from the transcript. Maximum 10 fields. Field names are auto-normalized on creation: lowercased and special characters replaced with _ (e.g. "Customer ID" → "customer_id").
10Show child attributes
Show child attributes
URLs for receiving completion/failure notifications via POST requests.
Show child attributes
Show child attributes
If true, an AI summary of the transcription will be generated.
A custom prompt that guides how the AI generates the summary (e.g., "Focus on customer complaints and resolution steps"). Only takes effect when summary is true.
300Language for the generated summary. Use "df" for automatic detection based on the audio language. See Supported Languages.
Language for analytics reports. Use "df" for automatic detection. See Supported Languages.
Response
Configuration created successfully.
Show child attributes
Show child attributes