Call log
The call log (CDR) contains the history of all calls: direction, numbers, extensions involved, outcome, duration, recording. Scope cdr:read.
Searching calls
curl -s "https://centralino.exovoip.it/api/v1/cdr?from=2026-11-01&to=2026-11-04&direction=inbound&disposition=no_answer" \
-H "X-API-Key: $EXOPBX_API_KEY"
curl -s https://centralino.exovoip.it/api/v1/cdr/1762250400.123 -H "X-API-Key: $EXOPBX_API_KEY"
curl -s "https://centralino.exovoip.it/api/v1/cdr/export.csv?from=2026-11-01" -H "X-API-Key: $EXOPBX_API_KEY" -o chiamate.csvconst missed = await pbx.cdr.list({
from: '2026-11-01',
to: '2026-11-04',
direction: 'inbound',
disposition: 'no_answer',
});
const { call } = await pbx.cdr.get('1762250400.123'); // dettaglio con i passaggi della chiamata
const csv = await pbx.cdr.export({ from: '2026-11-01' });$missed = $pbx->cdr->list(from: '2026-11-01', to: '2026-11-04', direction: 'inbound', disposition: 'no_answer');
$call = $pbx->cdr->get('1762250400.123')['call'];
file_put_contents('chiamate.csv', $pbx->cdr->export(from: '2026-11-01'));missed = pbx.cdr.list(from_="2026-11-01", to="2026-11-04", direction="inbound", disposition="no_answer")
call = pbx.cdr.get("1762250400.123")["call"]
csv = pbx.cdr.export(from_="2026-11-01")List filters:
| Filter | Description |
|---|---|
from, to | Date range |
direction | inbound, outbound, internal |
disposition | answered, no_answer, busy, failed, congestion |
number, extension, did | Caller or called number, extension, company number |
trunkId, hasRecording | Trunk used, recorded calls only |
minDurationS, maxDurationS | Duration |
tenantId | Platform global view: filter by tenant |
Calls are sorted from most recent. Each call is identified by its linkedid; GET /v1/cdr/:linkedid returns the details with all legs (ringing, transfers, queues).
The "user" role sees only calls for its own extension.
Export
GET /v1/cdr/export.csv accepts the same filters and returns a CSV file (; separator), suitable for spreadsheets and business software.
All calls in a period
# Prima pagina
curl -s "https://centralino.exovoip.it/api/v1/cdr?limit=100" -H "X-API-Key: $EXOPBX_API_KEY"
# Pagina successiva: valore nextCursor della risposta precedente
curl -s "https://centralino.exovoip.it/api/v1/cdr?limit=100&cursor=eyJ2IjoxfQ" -H "X-API-Key: $EXOPBX_API_KEY"// Tutte le pagine, una dopo l'altra
for await (const call of pbx.paginate(pbx.cdr.list, { limit: 100 })) {
console.log(call.linkedid);
}
// Una pagina alla volta
const page = await pbx.cdr.list({ limit: 100 });
const next = page.nextCursor ? await pbx.cdr.list({ limit: 100, cursor: page.nextCursor }) : null;foreach ($pbx->paginate([$pbx->cdr, 'list'], ['limit' => 100]) as $call) {
echo $call['linkedid'], PHP_EOL;
}for call in pbx.paginate(pbx.cdr.list, limit=100):
print(call["linkedid"])Endpoints
| Request | Scope | SDK method |
|---|---|---|
GET /v1/cdr | cdr:read | cdr.list() |
GET /v1/cdr/export.csv | cdr:read | cdr.export() |
GET /v1/cdr/:linkedid | cdr:read | cdr.get() |
