Skip to main content
Heify is built around four core objects. Understanding their structure is essential for working with the API effectively.

Configuration

A Configuration is a reusable template that defines how audio/video files are processed. It sets the language, vocabulary, extraction fields, and optional features like summaries or webhooks. Every transcription requires a configuration.

Fields

FieldTypeRequiredDescription
configuration_idstringAuto-generatedUnique identifier (UUID)
client_idstringAuto-assignedYour account identifier
tagstringYesDescriptive name (max 255 characters)
vocabularyarray<string>NoCustom terms to improve recognition accuracy
extraction_fieldsarray<object>NoStructured data fields to extract via AI (max 10)
summarybooleanNoGenerate an AI summary (default: false)
summary_languagestringNoLanguage for the summary ("df" = auto-detect)
analytics_languagestringNoLanguage for analytics reports ("df" = auto-detect)
webhooksobjectNoURLs to notify on completion or failure
created_atstringAuto-generatedISO 8601 creation timestamp

Extraction Fields

Each item in extraction_fields tells the AI what structured data to extract from the transcript.
FieldTypeRequiredDescription
namestringYesField identifier (e.g. "sentiment", "ticket_id")
typestringYesData type: string, number, boolean, array
descriptionstringYesInstructions for the AI — the more specific, the more accurate
Define a bounded set of possible values in the description for consistent results. For example: “Classify the sentiment. Must be one of: POSITIVE, NEGATIVE, NEUTRAL.”

Webhooks

FieldTypeDescription
success_urlstringPOST notification when the transcription completes
error_urlstringPOST notification when the transcription fails

Example

{
  "configuration_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
  "client_id": "client-uuid",
  "tag": "Sales Call Analysis",
  "vocabulary": ["CRM", "upsell", "churn"],
  "extraction_fields": [
    {
      "name": "sentiment",
      "type": "string",
      "description": "Overall sentiment of the conversation: POSITIVE, NEGATIVE, or NEUTRAL."
    },
    {
      "name": "next_action",
      "type": "string",
      "description": "The agreed next action with the customer, if any."
    }
  ],
  "summary": true,
  "summary_language": "en",
  "analytics_language": "en",
  "webhooks": {
    "success_url": "https://example.com/webhooks/success",
    "error_url": "https://example.com/webhooks/error"
  },
  "created_at": "2025-01-15T10:00:00.000000+00:00"
}

Evaluator

An Evaluator is a quality-scoring template made up of criteria. When attached to a transcription, the AI evaluates the conversation against each criterion and produces a score. Evaluators are optional — use them when you need automated quality assurance.

Fields

FieldTypeRequiredDescription
evaluator_idstringAuto-generatedUnique identifier (UUID)
client_idstringAuto-assignedYour account identifier
tagstringYesName of the evaluator (not updatable after creation)
descriptionstringNoDescription of the evaluator’s purpose
languagestringNoLanguage used for evaluation ("df" = auto-detect)
contextanyNoAdditional context to guide the AI evaluation
criteriaarray<object>YesList of evaluation criteria (min 1, max 10)
created_atstringAuto-generatedISO 8601 creation timestamp
updated_atstringAuto-updatedISO 8601 last-modified timestamp

Criteria

Each criterion defines one aspect of the evaluation.
FieldTypeDescription
idstringCriterion UUID (auto-generated)
namestringName of the criterion
descriptionstringInstructions for the AI to evaluate this criterion
typestringboolean, scale, or strict (see below)
weightnumberPercentage contribution to the total score (ignored for strict)
Criterion types:
  • boolean — Pass/fail. If the criterion passes, its weight is added to the total score.
  • scale — Scored 1–5 (1 = Poor, 5 = Excellent). Contributes (value / 5) × weight to the score. Fails if the result is below 3.
  • strict — Critical criterion. If it fails, critical_fail_triggered is set to true on the result, regardless of the overall score. The weight is always forced to 0.

Example

{
  "evaluator_id": "b2c3d4e5-f6a7-8901-2345-678901bcdef0",
  "client_id": "client-uuid",
  "tag": "Customer Service Standard",
  "description": "Evaluates call quality for the support team.",
  "language": "en",
  "context": "Inbound customer support calls for a SaaS product.",
  "criteria": [
    {
      "id": "c1d2e3f4-...",
      "name": "Greeting",
      "description": "Did the agent greet the customer with the standard opening phrase?",
      "type": "BOOLEAN",
      "weight": 20
    },
    {
      "id": "d2e3f4g5-...",
      "name": "No offensive language",
      "description": "Did the agent use any rude or inappropriate language?",
      "type": "STRICT",
      "weight": 0
    },
    {
      "id": "e3f4g5h6-...",
      "name": "Issue resolved",
      "description": "Was the customer's issue fully resolved by the end of the call?",
      "type": "BOOLEAN",
      "weight": 80
    }
  ],
  "created_at": "2025-01-15T10:00:00.000000",
  "updated_at": "2025-01-15T10:00:00.000000"
}

Participant

A Participant represents an individual whose performance is tracked across transcriptions — a support agent, job candidate being interviewed, salesperson, or any person. Participants are optional — use them when you need per-person analytics.

Fields

FieldTypeRequiredDescription
participant_idstringAuto-generatedUnique identifier (UUID)
client_idstringAuto-assignedYour account identifier
tagstringYesName or identifier of the participant (e.g. agent name, candidate name, employee ID)
metadataobjectNoFree-form key-value pairs for any additional data
created_atstringAuto-generatedISO 8601 creation timestamp
updated_atstringAuto-updatedISO 8601 last-modified timestamp
When updating metadata, the new object fully replaces the previous one (PUT semantics). To update a single field without losing the rest, fetch the participant first, modify the object locally, and send the complete updated metadata.

Example

{
  "participant_id": "c3d4e5f6-a7b8-9012-3456-789012cdef01",
  "client_id": "client-uuid",
  "tag": "Sarah Johnson",
  "metadata": {
    "email": "sarah.johnson@example.com",
    "role": "Senior Support Agent",
    "department": "Customer Success",
    "employee_id": "EMP-0042"
  },
  "created_at": "2025-01-15T10:00:00.000000",
  "updated_at": "2025-01-15T10:00:00.000000"
}

Transcription

A Transcription represents a single audio or video processing job. Its structure evolves as the job moves through its lifecycle.

Fields

FieldTypeDescription
transcription_idstringUnique identifier (UUID)
statusstringCurrent status: PENDING, IN_PROGRESS, COMPLETED, FAILED
configuration_idstringID of the configuration used
configuration_tagstringTag of the configuration used
evaluator_idstringID of the evaluator used (if any)
participant_idstringID of the participant associated (if any)
namestringCustom name (null if not set)
groupstringReview group (null if not set)
durationnumberDuration in seconds
detailsobjectFull results — only present when COMPLETED
errorobjectError details — only present when FAILED

Status Lifecycle

1

PENDING

The job is queued and waiting to start.
2

IN_PROGRESS

The audio is being transcribed and analyzed.
3

COMPLETED

Processing finished. The details object contains all results.
4

FAILED

Processing failed. The error object explains why.

Groups

Use group to manage the review workflow for each transcription.
ValueDescription
PENDING_REVIEWNeeds manual review
UNDER_REVIEWCurrently being reviewed
ARCHIVEDCompleted and archived
nullNo group assigned

Details Object (when COMPLETED)

FieldTypeDescription
languagestringDetected language
num_speakersnumberNumber of unique speakers identified
created_atstringISO 8601 — when processing started
completed_atstringISO 8601 — when processing finished
conversationobjectFull transcript with speaker-separated segments
summaryobjectAI-generated summary (if enabled in the configuration)
fieldsobjectExtracted structured data (if configured)
evaluationobjectQuality score and criterion results (if an evaluator was used)

Example

{
  "transcription_id": "f0e9d8c7-b6a5-4321-fedc-ba9876543210",
  "status": "COMPLETED",
  "configuration_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
  "configuration_tag": "Sales Call Analysis",
  "evaluator_id": "b2c3d4e5-f6a7-8901-2345-678901bcdef0",
  "participant_id": "c3d4e5f6-a7b8-9012-3456-789012cdef01",
  "name": "call_2025_01_15.mp3",
  "group": "UNDER_REVIEW",
  "duration": 185.4,
  "details": {
    "language": "en",
    "num_speakers": 2,
    "created_at": "2025-01-15T10:00:00.123Z",
    "completed_at": "2025-01-15T10:03:45.789Z",
    "conversation": {
      "segments": [
        { "text": "Good morning, this is Sarah from support.", "speaker": "SPEAKER_00" },
        { "text": "Hi, I have an issue with my subscription.", "speaker": "SPEAKER_01" }
      ]
    },
    "summary": {
      "summary": "A support call where the customer reported a billing issue that was resolved by the agent."
    },
    "fields": {
      "fields": [
        { "name": "sentiment", "value": "POSITIVE" },
        { "name": "next_action", "value": "Send confirmation email" }
      ]
    },
    "evaluation": {
      "score": 90,
      "critical_fail_triggered": false,
      "criteria_results": [
        { "name": "Greeting", "passed": true },
        { "name": "No offensive language", "passed": true },
        { "name": "Issue resolved", "passed": true }
      ]
    }
  }
}

Supported Languages

The following languages are supported for transcriptions, summaries (summary_language), and analytics reports (analytics_language).
Use "df" for automatic language detection. For summary_language, the summary is generated in the detected language of each individual file. For analytics_language, the report uses the majority language across all files in the configuration.
LanguageISO Code
Afrikaansaf
Albaniansq
Arabicar
Azerbaijaniaz
Basqueeu
Belarusianbe
Bengalibn
Bosnianbs
Bulgarianbg
Catalanca
Chinesezh
Croatianhr
Czechcs
Danishda
Dutchnl
Englishen
Estonianet
Finnishfi
Frenchfr
Galiciangl
Germande
Greekel
Gujaratigu