Skip to main content

Overview

Agents are AI-powered callers that conduct conversations on your behalf. Each agent has a voice, a language and a duration, and there are two ways to design what it actually says:
  • Pick a focus and supply questions — a hiring template, described below. This is the original model, which is why an agent is sometimes still called an interview template.
  • Send a flow and design the conversation yourself — a custom agent. Not hiring-specific, and what to reach for outside recruiting.

Resource Structure

Creating Agents

Best Practice: For production integrations, always implement request timeouts.

Voice Options

Duration: The duration field is specified in minutes. The maximum allowed duration is 180 minutes (3 hours).

Background Sound

backgroundSound controls the ambient noise played to the contact during calls. It can be set on create or updated at any time via PATCH /agents/{id}.

Speaking for Another Company

An agent introduces itself as the company your API key belongs to. If you call on behalf of your own customers, set overrides on the agent and it speaks as that customer instead:
Both fields are optional and each falls back to your company profile, so agents without overrides are unchanged. It works on template and custom agents alike.
Send both fields together. They fall back independently, so a companyName on its own leaves your own company’s description in place and the agent introduces itself as Acme while describing you. PATCH also replaces the object whole rather than merging it, so send every field you want kept.
Only what the agent says changes: ownership, billing, analytics and phone-number routing all keep your real company.

Agent Focus Options

focus picks one of four hiring templates, each with its own style of call:
A first hiring screen - Basic qualifications - Availability - Salary expectations

Custom Agents

The four focus options above are hiring templates: you supply questions, InstaView supplies the rest of the call. A custom agent is the other way round — you design the whole conversation yourself by sending a flow instead of a focus, and the agent runs what you designed. This is what makes an agent usable outside hiring: sales discovery, support callbacks, renewal check-ins, operations checks. Nothing about a custom agent is recruiting-specific. An agent is custom the moment it carries a flow. You never send focus: "CUSTOM" — it is derived, and sending both is rejected.

The four pieces

The last three are accepted only alongside a flow; sending them for a template agent is a 422.
You do not describe your company in contextConfig. The description on your company profile is given to every custom agent automatically and resolved at the moment of each call, so editing the profile reaches the next call without touching a single agent.

The first message always discloses the AI

Article 50 of the EU AI Act requires a person to be told they are interacting with an AI system, unless that is already obvious to them, and the duty falls on us as the provider rather than on you. We apply the disclosure unconditionally, without judging whether any given call would qualify as obvious, because that judgement is not one a platform can make per call and the person on the other end is entitled to know either way. So if your flow.firstMessage does not already say so, one short sentence is appended to it at call time, in the agent’s own language. Every language language accepts has its own sentence, so the notice is always in the language the call is held in:
Nothing is appended when your opening already discloses. We look for the artificial part, not the assistant part, in every language in the table: virtuálny / virtuální, umelá inteligencia / umělá inteligence, automatizovaný, hlasový asistent, a standalone AI, artificial intelligence, virtual assistant, automated, künstliche Intelligenz, sztuczna inteligencja, kecerdasan buatan, 人工知能, and similar. A bare “assistant” or “asistent” does not count, because a company assistant who is a human being is an ordinary thing to be. Nor does AI sitting inside a company name: an opening that says “calling from AI Talent Partners” and nothing else has not disclosed, and will still get the sentence. Your stored firstMessage is never rewritten: the sentence is added on the way to the call, and reading the agent back returns exactly what you sent. To control the wording yourself, write your own disclosure into firstMessage and ours will not be added.

Getting structured data back

Without analyticsConfig, a custom agent places a call and returns a transcript. With it, you get data your own systems can act on — the difference between “here is what was said” and “budget confirmed: true, meeting booked: yes”.
  • extractionTargets — values pulled out of every call. One with an ideal also counts toward the match score.
  • scoringCriteria — holistic judgements over the whole call.
  • outcomes — did the call achieve what it was for? Decided met / not met.
  • outputTags — labels the AI may apply.
  • capture — which qualitative artefacts to produce (summary, Q&A, evaluation, sentiment, recording, transcript). All default to true.
Every item has a key, and it is yours: it is the field name the results come back under, so your code switches on it. Omit it and InstaView derives a slug of the label — convenient, but renaming the label later silently moves the results to a new key. Set it when your integration reads results by name. Results arrive as analytics on the conversation and on the analysis.completed webhook. See Conversations.
Scoring a flow question is set inline on the question, not in analyticsConfig — add importance and weight to the question itself. Questions are addressed by ids InstaView mints, which you cannot know while writing the flow. A question with an idealAnswer but no importance or weight is asked but not scored, and idealAnswer itself is optional — omit it for a question that has no right answer.

Personalising each call

Any text in a flow may contain {{contact.<key>}} placeholders. They are resolved per call, not when the agent is created, so one agent serves everyone you call. first_name, last_name, email, phone, company_name, company_description and agent_name are always available; add your own by sending them as the contact’s fields.

Custom agent reference

Full flow schema, validation errors, key rules and analytics configuration

Knowledge Base

Any agent — template or custom — can be given documents to consult mid-call: a job spec, a benefits summary, a pricing sheet, an FAQ. The agent looks them up on its own when the conversation calls for it; you do not have to reference them anywhere in the flow. Attaching one is a three-step flow, because the file goes straight to storage rather than through this API:
PDF, DOC/DOCX, TXT, MD, CSV, TSV, JSON, XML and YAML are accepted, up to 20 MB and 10 documents per agent. Documents can be deactivated to park them without losing them, and deleting one erases the file for good.
Uploads are rate limited more tightly than the rest of the API. Reserve slots as you need them rather than in a burst — see the endpoint reference for the current numbers.

Knowledge base reference

The full upload flow, limits, verification rules and error cases

Best Practices

Clear Questions

Write specific, open-ended questions

Appropriate Duration

15-30 minutes for most calls

Test First

Test agents before using in production

Iterate

Refine based on how the calls go

Next Steps

Conversations

See how a conversation uses an agent

API Reference

View complete Agents API reference