Read Rinkel calls, voicemails, contacts and numbers; add call notes, edit contacts, block numbers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: add a note to a call record (visible to everyone in the account who sees the call). The id is the call record's `id`; if Rinkel answers 404, retry with the record's `callId`. Rinkel API: PUT /call-detail-records/{callId}/note.
The note text.
The call record id (`id` of rinkel_list_calls).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: add a note to a call record (visible to everyone in the account who sees the call). The id is the call record's `id`; if Rinkel answers 404, retry with the record's `callId`. Rinkel API: PUT /call-detail-records/{callId}/note.
| Argument | Type | Description |
|---|---|---|
| content* | string | The note text. |
| call_record_id* | string | The call record id (`id` of rinkel_list_calls). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"call_record_id",
"content"
],
"properties": {
"content": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The note text."
},
"call_record_id": {
"type": "string",
"minLength": 1,
"description": "The call record id (`id` of rinkel_list_calls)."
}
}
}WRITE: block a number from calling ANY of the account's numbers. Accepts an E.164 number, 'anonymous', or a prefix wildcard such as '+31*' (a wildcard must end the value and include a country code; a broad wildcard blocks every caller from that country). Undo with rinkel_unblock_number. Rinkel API: POST /privacy/block-number.
| Argument | Type | Description |
|---|---|---|
| number* | string | E.164 number (+31612345678), 'anonymous', or a prefix wildcard like '+3161*'. |
| reason | string | Why it is blocked (for example Spam). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "E.164 number (+31612345678), 'anonymous', or a prefix wildcard like '+3161*'."
},
"reason": {
"type": "string",
"maxLength": 200,
"description": "Why it is blocked (for example Spam)."
}
}
}Number of voicemails that have not been played yet. Rinkel API: GET /voicemails/new-count.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}WRITE: create a contact. It is shared with everyone in the Rinkel account (all users see it and calls from its numbers show its name). Rinkel API: POST /contacts.
| Argument | Type | Description |
|---|---|---|
| string | ||
| numbers* | array | Phone numbers of the contact (Rinkel requires at least one). |
| last_name | string | |
| first_name | string | |
| company_name | string | |
| default_outbound_number_id | string | Id of the Rinkel number to call this contact from (rinkel_list_numbers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"numbers"
],
"properties": {
"email": {
"type": "string",
"maxLength": 200
},
"numbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"country_iso_code",
"number"
],
"properties": {
"label": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Label such as Mobile or Work."
},
"number": {
"type": "string",
"maxLength": 40,
"minLength": 3,
"description": "The number without the country calling code."
},
"country_iso_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Country code such as NL."
}
}
},
"maxItems": 10,
"minItems": 1,
"description": "Phone numbers of the contact (Rinkel requires at least one)."
},
"last_name": {
"type": "string",
"maxLength": 100
},
"first_name": {
"type": "string",
"maxLength": 100
},
"company_name": {
"type": "string",
"maxLength": 200
},
"default_outbound_number_id": {
"type": "string",
"description": "Id of the Rinkel number to call this contact from (rinkel_list_numbers)."
}
}
}WRITE, irreversible: delete one note from a call record. Needs confirm=true after the user approved it. Rinkel API: DELETE /call-detail-records/{callId}/note/{noteId}.
| Argument | Type | Description |
|---|---|---|
| confirm | boolean | Must be true, set only after the user explicitly approved this exact action. |
| note_id* | string | The note id (`notes[].id`). |
| call_record_id* | string | The call record id (`id`). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"call_record_id",
"note_id"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Must be true, set only after the user explicitly approved this exact action."
},
"note_id": {
"type": "string",
"minLength": 1,
"description": "The note id (`notes[].id`)."
},
"call_record_id": {
"type": "string",
"minLength": 1,
"description": "The call record id (`id`)."
}
}
}WRITE, irreversible: delete a contact for the whole account. Needs confirm=true after the user approved it. The Rinkel system contact cannot be deleted. Rinkel API: DELETE /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| confirm | boolean | Must be true, set only after the user explicitly approved this exact action. |
| contact_id* | string | The contact id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Must be true, set only after the user explicitly approved this exact action."
},
"contact_id": {
"type": "string",
"minLength": 1,
"description": "The contact id."
}
}
}Find the contact that owns a phone number (E.164 such as +31612345678 works best). 404 when there is none. Rinkel API: GET /contacts/find-by-number/{number}.
| Argument | Type | Description |
|---|---|---|
| phone_number* | string | The phone number, preferably in E.164 format (+31612345678). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"phone_number"
],
"properties": {
"phone_number": {
"type": "string",
"maxLength": 40,
"minLength": 3,
"description": "The phone number, preferably in E.164 format (+31612345678)."
}
}
}Get one call detail record by its Rinkel id (the `id` field of rinkel_list_calls): numbers, users, status, duration, notes, voicemail and call-recording ids, AI insights. Rinkel API: GET /call-detail-records/{id}.
| Argument | Type | Description |
|---|---|---|
| call_record_id* | string | The call detail record id (`id`). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"call_record_id"
],
"properties": {
"call_record_id": {
"type": "string",
"minLength": 1,
"description": "The call detail record id (`id`)."
}
}
}Get one call detail record by its network `callId` (the id Rinkel sends in webhook events), optionally with insights and notes. Rinkel API: GET /call-detail-records/by-call-id/{callId}.
| Argument | Type | Description |
|---|---|---|
| include_details | boolean | Include insights and notes. |
| network_call_id* | string | The network call id (`callId` field). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"network_call_id"
],
"properties": {
"include_details": {
"type": "boolean",
"description": "Include insights and notes."
},
"network_call_id": {
"type": "string",
"minLength": 1,
"description": "The network call id (`callId` field)."
}
}
}Get a temporary URL (valid 3 hours) to stream or download a call recording. The id is `callRecording.id` of a call record. Append `download` as a query parameter to the URL to download instead of stream. Rinkel API: GET /call-recordings/{id}/stream.
| Argument | Type | Description |
|---|---|---|
| call_recording_id* | string | The call recording id (`callRecording.id` of a call record). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"call_recording_id"
],
"properties": {
"call_recording_id": {
"type": "string",
"minLength": 1,
"description": "The call recording id (`callRecording.id` of a call record)."
}
}
}Get the raw transcription of a call by its network `callId` (needs Rinkel AI insights on the account; 404 when the call has none). Rinkel API: GET /call-detail-records/by-call-id/{callId}/transcription.
| Argument | Type | Description |
|---|---|---|
| network_call_id* | string | The network call id (`callId` field of the call record). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"network_call_id"
],
"properties": {
"network_call_id": {
"type": "string",
"minLength": 1,
"description": "The network call id (`callId` field of the call record)."
}
}
}Get one contact by id. Rinkel API: GET /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| contact_id* | string | The contact id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "string",
"minLength": 1,
"description": "The contact id."
}
}
}Get one Rinkel number with its full dial plan: greeting, business hours schedule, call forwarding targets and ring logic, voice menu, call recording and caller-id settings. Rinkel API: GET /numbers/{id}.
| Argument | Type | Description |
|---|---|---|
| number_id* | string | The number id (rinkel_list_numbers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number_id"
],
"properties": {
"number_id": {
"type": "string",
"minLength": 1,
"description": "The number id (rinkel_list_numbers)."
}
}
}Get one user by id, including preferences, notification settings, schedule and `deviceId`. Rinkel API: GET /users/{id}.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | The user id (rinkel_list_users). |
| include_avatar | boolean | Include avatar URLs. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"minLength": 1,
"description": "The user id (rinkel_list_users)."
},
"include_avatar": {
"type": "boolean",
"description": "Include avatar URLs."
}
}
}Get a temporary URL (valid 3 hours) to stream or download a voicemail. The id is `voicemail.id` of a call or voicemail record. Rinkel API: GET /voicemails/{id}/stream.
| Argument | Type | Description |
|---|---|---|
| voicemail_id* | string | The voicemail id (`voicemail.id`). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"voicemail_id"
],
"properties": {
"voicemail_id": {
"type": "string",
"minLength": 1,
"description": "The voicemail id (`voicemail.id`)."
}
}
}List call detail records (inbound and outbound calls) with date, direction, status (ANSWERED, MISSED, VOICEMAIL, ANSWERING_SERVICE), duration, external and internal number, the users involved, notes, and (when the account has Rinkel AI insights) the AI summary and sentiment. Use for 'who called today', 'which calls did we miss this week', 'calls longer than 5 minutes'. Newest first by default. Rinkel API: GET /call-detail-records.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (default 1). |
| sort | string | Sort field (default date). |
| filter | string | Free-text search over calls. |
| contact | string | Only calls with this contact (id). |
| end_date | string | Only calls on or before this date (yyyy-mm-dd = end of that day UTC, or an ISO date-time with timezone). |
| per_page | integer | Items per page (default 10, max 50). |
| statuses | array | Only these call outcomes. |
| user_ids | array | Only calls handled by these user ids (rinkel_list_users). |
List the contacts shared with everyone in the account (plus the Rinkel system contact, tag 'system'): names, company, phone numbers, email. Rinkel API: GET /contacts.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (default 1). |
| filter | string | Search by name, company or number. |
| letter | string | Only contacts whose name starts with this letter. |
| per_page | integer | Items per page (default 10, max 50). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (default 1)."
},
"filter": {
"type": "string",
"description": "Search by name, company or number."
},
"letter": {
"type": "string",
"maxLength": 1,
"minLength": 1,
"description": "Only contacts whose name starts with this letter."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Items per page (default 10, max 50)."
}
}
}List the account's Rinkel phone numbers: id, label, number, status (ACTIVE, SUSPENDED, PENDING_PORTING_IN ...), activation date and the users assigned. Rinkel API: GET /numbers.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the uploaded audio recordings used in the dial plan (greetings, announcements, voice-over scripts): name, description, duration and where each is used. Not call recordings. Rinkel API: GET /recordings.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (default 1). |
| sort | string | Sort field (default date). |
| per_page | integer | Items per page (default 10, max 999). |
| sort_order | string | Sort order (default DESC). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (default 1)."
},
"sort": {
"enum": [
"date",
"duration",
"name",
"description"
],
"type": "string",
"description": "Sort field (default date)."
},
"per_page": {
"type": "integer",
"maximum": 999,
"minimum": 1,
"description": "Items per page (default 10, max 999)."
},
"sort_order": {
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort order (default DESC)."
}
}
}List the account's users: name, email, phone number, role (ADMIN, USER, ANSWERINGSERVICE), availability schedule and status, and `fixed`/device info (`deviceId` is needed to start a call). Rinkel API: GET /users.
| Argument | Type | Description |
|---|---|---|
| include_avatars | boolean | Include avatar URLs. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"include_avatars": {
"type": "boolean",
"description": "Include avatar URLs."
}
}
}List voicemail messages (call records with status VOICEMAIL): caller, date, duration, whether new, and the voicemail id. Newest first. With is_new=true Rinkel ignores every other filter and returns only unplayed voicemails. Rinkel API: GET /voicemails.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (default 1). |
| filter | string | Free-text search over calls. |
| is_new | boolean | Only unplayed voicemails (true). All other filters are ignored then. |
| topics | array | Only voicemails with these AI topic ids. |
| end_date | string | Only calls on or before this date (yyyy-mm-dd = end of that day UTC, or an ISO date-time with timezone). |
| per_page | integer | Items per page (default 10, max 50). |
| has_notes | boolean | Only calls that have (true) or lack (false) notes. |
| sort_order | string | Sort order by date (default DESC). |
| start_date |
List the webhook subscriptions (events incomingCall, outgoingCall, callStart, callEnd, callInsights) with URL and active flag. Webhooks need the Expert plan. Rinkel API: GET /webhooks.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}WRITE, COSTS CALL MINUTES: starts a real phone call. Rinkel rings the given user device first and, once it is answered, dials `to` using the chosen Rinkel number as caller id, so call charges apply to the account and the person called sees the number. Needs confirm=true, set only after the user explicitly asked to place this call. Get device_id from rinkel_list_users (`fixed`/device info or `deviceId`) and number_id from rinkel_list_numbers. Rinkel API: POST /dial.
| Argument | Type | Description |
|---|---|---|
| to* | string | The number to call, in E.164 format (+31612345678). |
| confirm | boolean | Must be true, set only after the user explicitly approved this exact action. |
| anonymous | boolean | Hide the caller id (default false). |
| device_id* | string | The id of the user device that starts the call (`deviceId` of a user). |
| number_id* | string | The id of the Rinkel number used as caller id (rinkel_list_numbers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"device_id",
"to",
"number_id"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$",
"description": "The number to call, in E.164 format (+31612345678)."
},
"confirm": {
"type": "boolean",
"description": "Must be true, set only after the user explicitly approved this exact action."
},
"anonymous": {
"type": "boolean",
"description": "Hide the caller id (default false)."
},
"device_id": {
"type": "string",
"minLength": 1,
"description": "The id of the user device that starts the call (`deviceId` of a user)."
},
"number_id": {
"type": "string",
"minLength": 1,
"description": "The id of the Rinkel number used as caller id (rinkel_list_numbers)."
}
}
}WRITE: remove a number (or the same wildcard pattern that was blocked) from the block list so it can call again. Rinkel API: DELETE /privacy/unblock-number.
| Argument | Type | Description |
|---|---|---|
| number* | string | The blocked entry exactly as it was blocked. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "The blocked entry exactly as it was blocked."
}
}
}WRITE: replace the text of an existing note on a call record (the note id is in `notes[].id` of the call record). Rinkel API: PATCH /call-detail-records/{callId}/note/{noteId}.
| Argument | Type | Description |
|---|---|---|
| content* | string | The new note text. |
| note_id* | string | The note id (`notes[].id`). |
| call_record_id* | string | The call record id (`id`). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"call_record_id",
"note_id",
"content"
],
"properties": {
"content": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The new note text."
},
"note_id": {
"type": "string",
"minLength": 1,
"description": "The note id (`notes[].id`)."
},
"call_record_id": {
"type": "string",
"minLength": 1,
"description": "The call record id (`id`)."
}
}
}WRITE: update a contact (PUT semantics). `numbers` is required and REPLACES all stored numbers, and an omitted default_outbound_number_id CLEARS it; omitted names, company and email keep their stored value. Read the contact first (rinkel_get_contact) and resend what must stay. The system contact cannot be changed. Rinkel API: PUT /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| string | ||
| numbers* | array | The COMPLETE list of numbers (replaces the stored ones; Rinkel requires at least one, so read the contact first and resend the ones to keep). |
| last_name | string | |
| contact_id* | string | The contact id. |
| first_name | string | |
| company_name | string | |
| default_outbound_number_id | string | Resend the current value to keep it; omit to clear it. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id",
"numbers"
],
"properties": {
"email": {
"type": "string",
"maxLength": 200
},
"numbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"country_iso_code",
"number"
],
"properties": {
"label": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Label such as Mobile or Work."
},
"number": {
"type": "string",
"maxLength": 40,
"minLength": 3,
"description": "The number without the country calling code."
},
"country_iso_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Country code such as NL."
}
}
},
"maxItems": 10,
"minItems": 1,
"description": "The COMPLETE list of numbers (replaces the stored ones; Rinkel requires at least one, so read the contact first and resend the ones to keep)."
},
"last_name": {
"type": "string",
"maxLength": 100
},
"contact_id": {
"type": "string",
"minLength": 1,
"description": "The contact id."
},
"first_name": {
"type": "string",
"maxLength": 100
},
"company_name": {
"type": "string",
"maxLength": 200
},
"default_outbound_number_id": {
"type": "string",
"description": "Resend the current value to keep it; omit to clear it."
}
}
}Check a phone number for a country and return its normalised form. With check_inventory=true Rinkel also checks whether the number is available to order. Rinkel API: GET /misc/validate-phone-number.
| Argument | Type | Description |
|---|---|---|
| number* | string | The number without the country calling code. |
| check_inventory | boolean | Also check availability to order. |
| country_iso_code* | string | Country code such as NL or BE. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"country_iso_code",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 40,
"minLength": 3,
"description": "The number without the country calling code."
},
"check_inventory": {
"type": "boolean",
"description": "Also check availability to order."
},
"country_iso_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Country code such as NL or BE."
}
}
}| has_notes | boolean | Only calls that have (true) or lack (false) notes. |
| directions | array | Only these directions. |
| sentiments | array | Only calls with this AI-insights sentiment. |
| sort_order | string | Sort order (default DESC). |
| start_date | string | Only calls on or after this date (yyyy-mm-dd, or an ISO date-time with timezone). Sent as a Unix timestamp. |
| date_preset | string | A relative period. It overrides start_date and end_date. |
| has_insights | boolean | Only calls that have AI insights. |
| is_anonymous | boolean | Only calls from a hidden number (true) or not (false). |
| contact_lookup | boolean | Include the matching contact in each record. |
| duration_preset | array | Duration buckets in minutes ('30-0' = 30 minutes or more). Overrides min/max duration. |
| external_number | string | Only calls with this external (caller or callee) number. |
| include_details | boolean | Include insights and notes in each record. |
| internal_numbers | array | Only calls on these internal (Rinkel) numbers, as listed by rinkel_list_numbers. |
| has_transcription | boolean | Only calls that have a transcription. |
| max_duration_seconds | integer | Maximum duration in seconds (ignored with duration_preset). |
| min_duration_seconds | integer | Minimum duration in seconds (ignored with duration_preset). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (default 1)."
},
"sort": {
"enum": [
"date",
"duration",
"status",
"internalNumber",
"externalNumber",
"user"
],
"type": "string",
"description": "Sort field (default date)."
},
"filter": {
"type": "string",
"description": "Free-text search over calls."
},
"contact": {
"type": "string",
"description": "Only calls with this contact (id)."
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Only calls on or before this date (yyyy-mm-dd = end of that day UTC, or an ISO date-time with timezone)."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Items per page (default 10, max 50)."
},
"statuses": {
"type": "array",
"items": {
"enum": [
"MISSED",
"ANSWERED",
"VOICEMAIL"
],
"type": "string"
},
"description": "Only these call outcomes."
},
"user_ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 50,
"description": "Only calls handled by these user ids (rinkel_list_users)."
},
"has_notes": {
"type": "boolean",
"description": "Only calls that have (true) or lack (false) notes."
},
"directions": {
"type": "array",
"items": {
"enum": [
"INBOUND",
"OUTBOUND"
],
"type": "string"
},
"description": "Only these directions."
},
"sentiments": {
"type": "array",
"items": {
"enum": [
"POSITIVE",
"NEGATIVE",
"NEUTRAL"
],
"type": "string"
},
"description": "Only calls with this AI-insights sentiment."
},
"sort_order": {
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort order (default DESC)."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Only calls on or after this date (yyyy-mm-dd, or an ISO date-time with timezone). Sent as a Unix timestamp."
},
"date_preset": {
"enum": [
"TODAY",
"THIS-WEEK",
"LAST-TWO-WEEKS",
"LAST-MONTH"
],
"type": "string",
"description": "A relative period. It overrides start_date and end_date."
},
"has_insights": {
"type": "boolean",
"description": "Only calls that have AI insights."
},
"is_anonymous": {
"type": "boolean",
"description": "Only calls from a hidden number (true) or not (false)."
},
"contact_lookup": {
"type": "boolean",
"description": "Include the matching contact in each record."
},
"duration_preset": {
"type": "array",
"items": {
"enum": [
"1-5",
"5-15",
"15-30",
"30-0"
],
"type": "string"
},
"description": "Duration buckets in minutes ('30-0' = 30 minutes or more). Overrides min/max duration."
},
"external_number": {
"type": "string",
"description": "Only calls with this external (caller or callee) number."
},
"include_details": {
"type": "boolean",
"description": "Include insights and notes in each record."
},
"internal_numbers": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 50,
"description": "Only calls on these internal (Rinkel) numbers, as listed by rinkel_list_numbers."
},
"has_transcription": {
"type": "boolean",
"description": "Only calls that have a transcription."
},
"max_duration_seconds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Maximum duration in seconds (ignored with duration_preset)."
},
"min_duration_seconds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum duration in seconds (ignored with duration_preset)."
}
}
}| string |
| Only calls on or after this date (yyyy-mm-dd, or an ISO date-time with timezone). Sent as a Unix timestamp. |
| date_preset | string | A relative period (overrides start_date and end_date). |
| is_anonymous | boolean | Only calls from a hidden number (true) or not (false). |
| contact_lookup | boolean | Include the matching contact in each record. |
| external_number | string | Only calls with this external (caller or callee) number. |
| internal_numbers | array | Only calls on these internal (Rinkel) numbers, as listed by rinkel_list_numbers. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (default 1)."
},
"filter": {
"type": "string",
"description": "Free-text search over calls."
},
"is_new": {
"type": "boolean",
"description": "Only unplayed voicemails (true). All other filters are ignored then."
},
"topics": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 50,
"description": "Only voicemails with these AI topic ids."
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Only calls on or before this date (yyyy-mm-dd = end of that day UTC, or an ISO date-time with timezone)."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Items per page (default 10, max 50)."
},
"has_notes": {
"type": "boolean",
"description": "Only calls that have (true) or lack (false) notes."
},
"sort_order": {
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort order by date (default DESC)."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Only calls on or after this date (yyyy-mm-dd, or an ISO date-time with timezone). Sent as a Unix timestamp."
},
"date_preset": {
"enum": [
"TODAY",
"THIS-WEEK",
"LAST-TWO-WEEKS",
"LAST-MONTH"
],
"type": "string",
"description": "A relative period (overrides start_date and end_date)."
},
"is_anonymous": {
"type": "boolean",
"description": "Only calls from a hidden number (true) or not (false)."
},
"contact_lookup": {
"type": "boolean",
"description": "Include the matching contact in each record."
},
"external_number": {
"type": "string",
"description": "Only calls with this external (caller or callee) number."
},
"internal_numbers": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 50,
"description": "Only calls on these internal (Rinkel) numbers, as listed by rinkel_list_numbers."
}
}
}