Audio integrations
An audio integration connects a platform where your calls are generated or stored with AuditorIA, so recordings come in without uploading them by hand. Each integration is an entry point: it drops the audio into AuditorIA and, from there, the app processes it through its normal flow (transcription, analysis and auditing).
Audio sources are chosen per campaign, from the Audio Sources tab. This page explains how to connect each external source. For the campaign's overall map, see Campaign configuration.
No integration audits on its own. It only makes the audio enter AuditorIA. Once inside, the case follows the same path as any other: it shows up in tasks, gets transcribed and is ready to audit.
Webhook integrations (like Anura) send data over the internet to your own AuditorIA's public address. The endpoint you enter in Anura is https://<your-auditoria-domain>/webhook/anura/, where the domain is your installation's. You don't have to guess it: AuditorIA shows you the exact endpoint on the Anura screen (step 1), ready to copy. An installation on localhost cannot receive these webhooks: the external platform needs an address reachable from the internet.
Anura
Connect your cloud PBX Anura so every call that ends with a recording enters AuditorIA automatically and is ready to audit.
How it works
When a call ends in Anura, Anura sends a notification (webhook) to AuditorIA with the call data and the link to the recording. AuditorIA validates the access key, identifies the operator, downloads the recording, creates the task and processes it. You don't have to upload anything by hand.
Before you start
- A call campaign created in AuditorIA. You'll need its identifier (
campaign_id). See Campaign configuration. - A quality scorecard linked to that campaign, so you can audit afterwards. See Quality scorecards.
- An AuditorIA API Key (the key that authenticates Anura's notification).
- Access to the Events / Webhooks configuration in your Anura account.
- Your AuditorIA public URL (see the note about the webhook address).
Step 1 - In AuditorIA: set Anura as the source
- In the side menu, open Campaigns > Campaign configuration > Calls. You'll see the campaign list: pick the one you want to integrate with Anura.

- Open the campaign (if it's new, save it first: the source is configured on an already-saved campaign) and go to the Audio Sources tab.

- Choose Anura and save.

When you choose Anura, AuditorIA shows a guide with the endpoint, the headers and the rules. Use it as a reference while you configure the event in Anura.

Step 2 - In AuditorIA: create the API Key
- Open Settings > API Keys (
/dashboard/settings/api-keys). - Generate an API Key and copy it. You'll use it as the
X-API-Keyheader when configuring Anura.
Store the API Key in a safe place when you create it. It's the credential that authenticates Anura's notifications against your AuditorIA.
Step 3 - In Anura: create the event
In your Anura account, create an event that notifies AuditorIA when the call ends.
- Go into the Anura panel.

- Open Configuration > Events.

- Use Add to create a new event.

The event has three tabs: Request, Headers and Body. Complete all three.
Request
Define where and how the notification is sent.
| Field | Value |
|---|---|
| Protocol | HTTPS |
| Host | your AuditorIA public domain |
| Port | 443 |
| Path | /webhook/anura/ |
| Method | POST |
| Content type | application/json |
| Authorization | No authorization (the key goes in Headers) |

The host is your AuditorIA installation's public domain. Don't guess it: the exact endpoint, ready to copy, is shown on the Audio Sources > Anura screen (step 1). An installation on localhost won't work, because Anura needs to reach it from the internet.
Headers
Add, as Key / Value pairs, the notification headers:
X-API-Key: the API Key you created in step 2.Content-Type:application/json.

Body
The Body is the JSON that Anura will send on each call. It's built like this:
- the keys are the fields AuditorIA needs;
- the values are Anura's
{{ ... }}variables, which Anura replaces with the real data when sending; campaign_idis not a variable: it's your campaign's number in AuditorIA. You see it in the campaign header as Campaign ID #N, and it goes without quotes.
Don't include the automatic fields: cdrid is generated by AuditorIA if missing, and hooktrigger defaults to END (besides, your event already fires only on END).
Paste this JSON in the Body and replace <YOUR_CAMPAIGN_ID> with your campaign's number:
{
"dialtime": "{{ dialtime }}",
"direction": "{{ direction }}",
"calling": "{{ calling }}",
"called": "{{ called }}",
"status": "{{ status }}",
"duration": "{{ duration }}",
"billseconds": "{{ billseconds }}",
"wasrecorded": "{{ wasrecorded }}",
"audio_file_mp3": "{{ audio_file_mp3 }}",
"accountname": "{{ accountname }}",
"accountextension": "{{ accountextension }}",
"queueagentname": "{{ queueagentname }}",
"answerterminal": "{{ answerterminal }}",
"campaign_id": <YOUR_CAMPAIGN_ID>
}

What each field is for:
| Field | What it's for |
|---|---|
dialtime | Call date and time. |
direction | Inbound (inbound) or outbound (outbound). |
calling / called | Origin and destination numbers. |
status | Final call status. |
duration | Duration in seconds. |
billseconds | Billed seconds. |
wasrecorded | Must be true. |
audio_file_mp3 | Public, accessible URL of the recording. |
accountname | Account/agent name. On outbound calls AuditorIA uses it as the operator. |
accountextension | Account extension. |
queueagentname / answerterminal | Agent name on inbound calls. AuditorIA uses it as the operator. |
campaign_id | Campaign number in AuditorIA (not a variable). |
AuditorIA identifies the operator by their name: on outbound calls it uses accountname; on inbound calls it uses queueagentname (or answerterminal). That's why it's best to include all three. It has to be the agent's name, not an extension. Confirm the exact variable name in Anura.
If any of the table's fields is missing, Anura still sends the notification, but AuditorIA rejects it.
Anura also offers many other variables (for example callingname, calledname, queue data or accounttags). You can add them to the Body if you want them for your own records, but they're optional: AuditorIA doesn't use them today, so the fields in the table are enough for the call to be processed.
The {{ ... }} variables you see in the JSON are offered by Anura. AuditorIA lists them in the Audio Sources > Anura guide, in two columns: on the left the field (the JSON key) and on the right the variable (the value). It's not a separate tab or form: it's a reference of which variables exist, so you use them inside the Body. For example, accountname -> {{ accountname }} means the Body has "accountname": "{{ accountname }}".


Only END events with a recording are processed. If wasrecorded is not true or audio_file_mp3 is not accessible, no task is created.
Save the event. There are no extra steps: from the next call that ends with a recording, Anura notifies AuditorIA and the call enters the flow on its own. Anura has no test button, so to confirm, make a real (short, recorded) call and check that it appears in the campaign's tasks.
What happens next
Once everything is configured, each call that ends with a recording:
- Reaches AuditorIA, which validates the API Key.
- Identifies the operator by name. If that operator doesn't exist yet, it creates it.
- Downloads the recording and creates the task.
- Enters the normal flow: it appears in Search and work with tasks, gets transcribed and is ready to review and audit.
Important notes
- Operator by name: if the agent's name in Anura doesn't match an existing operator, AuditorIA creates a new one. To avoid duplicate operators, use the same names you already have. See Manage local operators.
- Correct campaign: if
campaign_iddoesn't match a real campaign, the call may not be associated with the expected campaign. - Only END with recording: other events are received but don't create tasks.
Common issues
- No calls come in: check that the event is
END, that recording is enabled, thataudio_file_mp3is accessible and that the URL and headers are correct. - The notification is rejected (unauthorized): the
X-API-Keyis missing or incorrect. - The call enters another campaign or without the right operator: check
campaign_idand the agent name.
Other sources
The detailed guide for the other sources is in preparation. In the meantime, you can select them in the campaign's Audio Sources tab:
- Internal: audio uploaded by hand or via the internal API. See Upload audio.
- Net2Phone: recording sync via webhook.
- SFTP Server: sync from a remote server.
- External API: generic third-party integration via AuditorIA's API.
- Neotel: native ingestion (SQL Server + FTP).