Read Placetel calls, recordings, numbers and routing; edit contacts, start calls, send SMS.
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: switch the active routing profile of a phone number (for example to Holiday or Night). This changes LIVE call handling for that number immediately: callers are routed differently. Find ids with placetel_list_number_profiles. PUT /numbers/{number_id}/profiles.
Placetel number id.
Id of the profile to activate.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE: switch the active routing profile of a phone number (for example to Holiday or Night). This changes LIVE call handling for that number immediately: callers are routed differently. Find ids with placetel_list_number_profiles. PUT /numbers/{number_id}/profiles.
| Argument | Type | Description |
|---|---|---|
| number_id* | integer | Placetel number id. |
| profile_id* | integer | Id of the profile to activate. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number_id",
"profile_id"
],
"properties": {
"number_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel number id.",
"exclusiveMinimum": 0
},
"profile_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Id of the profile to activate.",
"exclusiveMinimum": 0
}
}
}WRITE: create a contact in the shared Placetel phone book. Give at least a name, company or number. Nothing is sent to the contact. POST /contacts.
| Argument | Type | Description |
|---|---|---|
| fax | string | Private fax number. |
| tags | array | Tags (replaces the existing tags on update; [] clears them). |
| string | Private email address. | |
| phone | string | Private phone number. |
| mobile | string | Private mobile number. |
| address | string | Private address. |
| blocked | boolean | true = calls from this contact are blocked. |
| company | string | Company. |
| fax_work | string | Work fax number. |
| last_name | string | Last name. |
| speeddial | string | Speed-dial code. |
| email_work | string | Work email address. |
| first_name | string | First name. |
| phone_work | string |
The Placetel account this API key belongs to: user id, name, email, company, platform (e.g. PROFI), primary SIP user id and the numbers the key may use. GET /me.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One incoming call by id: caller, called number, type, duration, contact, voicemail file URL. GET /calls/{id}.
| Argument | Type | Description |
|---|---|---|
| call_id* | integer | Placetel call id (from placetel_list_calls). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"call_id"
],
"properties": {
"call_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel call id (from placetel_list_calls).",
"exclusiveMinimum": 0
}
}
}One contact by id with all its fields. GET /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| contact_id* | integer | Placetel contact id (from placetel_list_contacts). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel contact id (from placetel_list_contacts).",
"exclusiveMinimum": 0
}
}
}One fax by id: numbers, status, status info, pages, retries, report and file URL. GET /faxes/{id}.
| Argument | Type | Description |
|---|---|---|
| fax_id* | integer | Placetel fax id (from placetel_list_faxes). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"fax_id"
],
"properties": {
"fax_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel fax id (from placetel_list_faxes).",
"exclusiveMinimum": 0
}
}
}One phone number by id: number, E.164, name, site, carrier, activation state and routing id. GET /numbers/{id}.
| Argument | Type | Description |
|---|---|---|
| number_id* | integer | Placetel number id (from placetel_list_numbers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number_id"
],
"properties": {
"number_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel number id (from placetel_list_numbers).",
"exclusiveMinimum": 0
}
}
}One routing object by its id or by the phone number it answers. GET /routings/{number_or_id}.
| Argument | Type | Description |
|---|---|---|
| number_or_id* | string | A routing id (e.g. 4711) or a phone number (e.g. 022112345678). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number_or_id"
],
"properties": {
"number_or_id": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "A routing id (e.g. 4711) or a phone number (e.g. 022112345678)."
}
}
}One SIP user (extension) by id: sipuid, extension, caller id, type, linked web user, online state and call settings. The SIP password and PINs are never returned. GET /sip_users/{id}.
| Argument | Type | Description |
|---|---|---|
| sip_user_id* | integer | Placetel SIP user id (from placetel_list_sip_users). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sip_user_id"
],
"properties": {
"sip_user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel SIP user id (from placetel_list_sip_users).",
"exclusiveMinimum": 0
}
}
}WRITE: start a real phone call. Placetel rings the given SIP user's phone first and, once answered, dials the target number. This places an actual call and call charges apply. Do not use without the user's explicit request. POST /calls.
| Argument | Type | Description |
|---|---|---|
| sipuid* | string | SIP user that is rung first, e.g. [email protected] (the sipuid from placetel_list_sip_users). |
| target* | string | Number to call, e.g. +4922112345678. |
| from_name | string | Name shown for the call. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sipuid",
"target"
],
"properties": {
"sipuid": {
"type": "string",
"pattern": "^[A-Za-z0-9._-]{1,64}@[A-Za-z0-9.-]{1,100}$",
"description": "SIP user that is rung first, e.g. [email protected] (the sipuid from placetel_list_sip_users)."
},
"target": {
"type": "string",
"pattern": "^\\+?[0-9][0-9 ()\\/-]{2,39}$",
"description": "Number to call, e.g. +4922112345678."
},
"from_name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Name shown for the call."
}
}
}List call-center agents with name, status, extension, priority and last call time. GET /call_center_agents.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
}
}
}Call-center calls of one day with queue, agent, from/to, answer status, start/end time and time spent in queue. date is required; narrow to queues with queue_ids. GET /call_center_calls.
| Argument | Type | Description |
|---|---|---|
| date* | string | Day to list, yyyy-mm-dd. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| queue_ids | array | Only these queue ids (see placetel_list_call_center_queues). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Day to list, yyyy-mm-dd."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"queue_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 50,
"minItems": 1,
"description": "Only these queue ids (see placetel_list_call_center_queues)."
}
}
}List call-center queues with name, ring time, loops and prompts. Use the ids to filter call-center calls. GET /call_center_queues.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
}
}
}Call detail records (billing view) for one day: from, to, answering SIP user, length in seconds, cost amount and description. date is required. GET /call_detail_records.
| Argument | Type | Description |
|---|---|---|
| date* | string | Day to list, yyyy-mm-dd. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Day to list, yyyy-mm-dd."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
}
}
}Incoming calls (accepted, missed, blocked, voicemail) on one day, today by default: caller number, called number, duration, matching contact, voicemail file URL and unread flag. For a different day pass date. GET /calls.
| Argument | Type | Description |
|---|---|---|
| date | string | Day to list, yyyy-mm-dd (default: today). |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| type | string | Call outcome filter. |
| order | string | Sort order by time. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| to_number | string | Only calls to this of your numbers. |
| from_number | string | Only calls from this caller number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Day to list, yyyy-mm-dd (default: today)."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"type": {
"enum": [
"voicemail",
"missed",
"blocked",
"accepted",
"voicemail,missed",
"missed,blocked,accepted"
],
"type": "string",
"description": "Call outcome filter."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort order by time."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"to_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Only calls to this of your numbers."
},
"from_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Only calls from this caller number."
}
}
}List the shared phone-book contacts with names, company, phone/mobile/fax numbers, emails, tags and blocked flag. Filter by name, company, email, number or update time. search_number finds a contact by any of its numbers. GET /contacts.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| string | Filter by private email. | |
| phone | string | Filter by private phone. |
| mobile | string | Filter by private mobile. |
| blocked | boolean | Only blocked (true) or only non-blocked (false) contacts. |
| company | string | Filter by company. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| last_name | string | Filter by last name. |
| speeddial | integer |
In- and outbound faxes with from/to number, status, pages, duration, type and the file URL. Filter by direction or number. GET /faxes.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| type | string | Direction filter. |
| order | string | Sort order. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| to_number | string | Only faxes to this number. |
| from_number | string | Only faxes from this number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"type": {
"enum": [
"inbound,outbound",
"inbound",
"outbound"
],
"type": "string",
"description": "Direction filter."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort order."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"to_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Only faxes to this number."
},
"from_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Only faxes from this number."
}
}
}List ring groups (ring_all, hunt, monitoring) with members. Filter by name, description or type. GET /groups.
| Argument | Type | Description |
|---|---|---|
| name | string | Filter by name. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| type | string | Group type. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| description | string | Filter by description. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by name."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"type": {
"enum": [
"ring_all",
"monitoring",
"hunt"
],
"type": "string",
"description": "Group type."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by description."
}
}
}The routing profiles of a phone number (for example Standard, Holiday, Night) and which one is active. Needs a Placetel plan with number profiles. GET /numbers/{number_id}/profiles.
| Argument | Type | Description |
|---|---|---|
| number_id* | integer | Placetel number id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number_id"
],
"properties": {
"number_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel number id.",
"exclusiveMinimum": 0
}
}
}List the phone numbers of the account with number, E.164 form, name, description, site, activation state and the routing object id that answers them. GET /numbers.
| Argument | Type | Description |
|---|---|---|
| name | string | Filter by name. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| number | string | Filter by number. |
| prefix | string | Filter by area-code prefix. |
| site_id | integer | Only numbers of this site (see placetel_list_sites). |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| activated | boolean | Only activated (true) or deactivated (false) numbers (Profi plans). |
| description | string | Filter by description. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by name."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Filter by number."
},
"prefix": {
"type": "string",
"maxLength": 20,
"minLength": 1,
"description": "Filter by area-code prefix."
},
"site_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only numbers of this site (see placetel_list_sites).",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"activated": {
"type": "boolean",
"description": "Only activated (true) or deactivated (false) numbers (Profi plans)."
},
"description": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by description."
}
}
}Call recordings with direction, from, to, duration, time and the file URL. Filter by direction, number or day. GET /recordings.
| Argument | Type | Description |
|---|---|---|
| to | string | Only recordings to this number. |
| date | string | Only recordings of this day, yyyy-mm-dd. |
| from | string | Only recordings from this number. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| order | string | Sort order by time. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| direction | array | Directions to include, e.g. ["in","out"]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"to": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Only recordings to this number."
},
"date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Only recordings of this day, yyyy-mm-dd."
},
"from": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Only recordings from this number."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort order by time."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"direction": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "Directions to include, e.g. [\"in\",\"out\"]."
}
}
}List routing plans (time-based call distribution plans) with name, description, ring duration and object counts. GET /routing_plans.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
}
}
}List routing objects (what happens to an incoming call: forward, group, routing plan, IVR, queue, voicemail, API) with their settings and time settings. Filter by update time. GET /routings.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| updated_since | string | Only routings updated at or after this date/time. |
| updated_until | string | Only routings updated at or before this date/time. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"updated_since": {
"type": "string",
"description": "Only routings updated at or after this date/time."
},
"updated_until": {
"type": "string",
"description": "Only routings updated at or before this date/time."
}
}
}List SIP users (phone extensions, softphones, fax and trunk lines) with extension number (did), caller id, type, online state and registrations. SIP passwords and PINs are never returned. GET /sip_users.
| Argument | Type | Description |
|---|---|---|
| did | integer | Filter by internal extension number. |
| name | string | Filter by name. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| username | string | Filter by SIP username. |
| description | string | Filter by description. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"did": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Filter by internal extension number.",
"exclusiveMinimum": 0
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by name."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"username": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by SIP username."
},
"description": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by description."
}
}
}List company sites (locations) with address and prefix. GET /sites.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
}
}
}List the web users of the account (main account and sub-users) with name, email, login, type, permissions and numbers. Filter by name, email, login or type. GET /users.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| type | string | Only the main account or only sub-users. |
| string | Filter by email. | |
| login | string | Filter by login. |
| per_page | integer | Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty. |
| last_name | string | Filter by last name. |
| first_name | string | Filter by first name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"type": {
"enum": [
"main_account",
"subuser"
],
"type": "string",
"description": "Only the main account or only sub-users."
},
"email": {
"type": "string",
"maxLength": 254,
"minLength": 1,
"description": "Filter by email."
},
"login": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by login."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"last_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by last name."
},
"first_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by first name."
}
}
}WRITE: send a real SMS to a phone number from the Placetel account. The recipient receives it immediately and SMS charges apply; it cannot be recalled. Do not use without the user's explicit request and exact text. POST /sms.
| Argument | Type | Description |
|---|---|---|
| message* | string | The exact message text (sent unchanged). |
| recipient* | string | Recipient number, e.g. +4915112345678. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"recipient",
"message"
],
"properties": {
"message": {
"type": "string",
"maxLength": 1600,
"minLength": 1,
"description": "The exact message text (sent unchanged)."
},
"recipient": {
"type": "string",
"pattern": "^\\+?[0-9][0-9 ()\\/-]{2,39}$",
"description": "Recipient number, e.g. +4915112345678."
}
}
}WRITE: update the given fields of a contact (omitted fields stay; an empty string clears a text field). tags replaces the whole tag list; blocked=true blocks the caller. PUT /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| fax | string | Private fax number. |
| tags | array | Tags (replaces the existing tags on update; [] clears them). |
| string | Private email address. | |
| phone | string | Private phone number. |
| mobile | string | Private mobile number. |
| address | string | Private address. |
| blocked | boolean | true = calls from this contact are blocked. |
| company | string | Company. |
| fax_work | string | Work fax number. |
| last_name | string |
| Work phone number. |
| mobile_work | string | Work mobile number. |
| address_work | string | Work address. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fax": {
"type": "string",
"maxLength": 40,
"description": "Private fax number."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 50,
"description": "Tags (replaces the existing tags on update; [] clears them)."
},
"email": {
"type": "string",
"maxLength": 254,
"description": "Private email address."
},
"phone": {
"type": "string",
"maxLength": 40,
"description": "Private phone number."
},
"mobile": {
"type": "string",
"maxLength": 40,
"description": "Private mobile number."
},
"address": {
"type": "string",
"maxLength": 300,
"description": "Private address."
},
"blocked": {
"type": "boolean",
"description": "true = calls from this contact are blocked."
},
"company": {
"type": "string",
"maxLength": 200,
"description": "Company."
},
"fax_work": {
"type": "string",
"maxLength": 40,
"description": "Work fax number."
},
"last_name": {
"type": "string",
"maxLength": 200,
"description": "Last name."
},
"speeddial": {
"type": "string",
"maxLength": 20,
"description": "Speed-dial code."
},
"email_work": {
"type": "string",
"maxLength": 254,
"description": "Work email address."
},
"first_name": {
"type": "string",
"maxLength": 200,
"description": "First name."
},
"phone_work": {
"type": "string",
"maxLength": 40,
"description": "Work phone number."
},
"mobile_work": {
"type": "string",
"maxLength": 40,
"description": "Work mobile number."
},
"address_work": {
"type": "string",
"maxLength": 300,
"description": "Work address."
}
}
}| Filter by speed-dial code. |
| email_work | string | Filter by work email. |
| first_name | string | Filter by first name. |
| phone_work | string | Filter by work phone. |
| mobile_work | string | Filter by work mobile. |
| search_number | string | Find the contact that owns this phone number (any of its number fields). |
| updated_since | string | Only contacts updated at or after this date/time. |
| updated_until | string | Only contacts updated at or before this date/time. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"email": {
"type": "string",
"maxLength": 254,
"minLength": 1,
"description": "Filter by private email."
},
"phone": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Filter by private phone."
},
"mobile": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Filter by private mobile."
},
"blocked": {
"type": "boolean",
"description": "Only blocked (true) or only non-blocked (false) contacts."
},
"company": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by company."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25). Not every endpoint honours it; keep paging until a page is empty.",
"exclusiveMinimum": 0
},
"last_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by last name."
},
"speeddial": {
"type": "integer",
"maximum": 9999999,
"minimum": 0,
"description": "Filter by speed-dial code."
},
"email_work": {
"type": "string",
"maxLength": 254,
"minLength": 1,
"description": "Filter by work email."
},
"first_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter by first name."
},
"phone_work": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Filter by work phone."
},
"mobile_work": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Filter by work mobile."
},
"search_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Find the contact that owns this phone number (any of its number fields)."
},
"updated_since": {
"type": "string",
"description": "Only contacts updated at or after this date/time."
},
"updated_until": {
"type": "string",
"description": "Only contacts updated at or before this date/time."
}
}
}| Last name. |
| speeddial | string | Speed-dial code. |
| contact_id* | integer | Placetel contact id. |
| email_work | string | Work email address. |
| first_name | string | First name. |
| phone_work | string | Work phone number. |
| mobile_work | string | Work mobile number. |
| address_work | string | Work address. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"fax": {
"type": "string",
"maxLength": 40,
"description": "Private fax number."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 50,
"description": "Tags (replaces the existing tags on update; [] clears them)."
},
"email": {
"type": "string",
"maxLength": 254,
"description": "Private email address."
},
"phone": {
"type": "string",
"maxLength": 40,
"description": "Private phone number."
},
"mobile": {
"type": "string",
"maxLength": 40,
"description": "Private mobile number."
},
"address": {
"type": "string",
"maxLength": 300,
"description": "Private address."
},
"blocked": {
"type": "boolean",
"description": "true = calls from this contact are blocked."
},
"company": {
"type": "string",
"maxLength": 200,
"description": "Company."
},
"fax_work": {
"type": "string",
"maxLength": 40,
"description": "Work fax number."
},
"last_name": {
"type": "string",
"maxLength": 200,
"description": "Last name."
},
"speeddial": {
"type": "string",
"maxLength": 20,
"description": "Speed-dial code."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Placetel contact id.",
"exclusiveMinimum": 0
},
"email_work": {
"type": "string",
"maxLength": 254,
"description": "Work email address."
},
"first_name": {
"type": "string",
"maxLength": 200,
"description": "First name."
},
"phone_work": {
"type": "string",
"maxLength": 40,
"description": "Work phone number."
},
"mobile_work": {
"type": "string",
"maxLength": 40,
"description": "Work mobile number."
},
"address_work": {
"type": "string",
"maxLength": 300,
"description": "Work address."
}
}
}