/me
qualsiasi chiave
Identità della chiave
Verifica che la chiave funzioni: ritorna tenant, pacchetto, permessi e limiti.
curl "https://www.ciamem.com/api/v1/me" \ -H "Authorization: Bearer ciamem_live_…"
Collega il tuo gestionale al centralino: rubrica, clienti, ticket e agenti — in lettura e scrittura.
Indirizzo base: https://www.ciamem.com/api/v1 · Richiede il pacchetto Enterprise.
La chiave si crea dalla console (pagina API) e si vede una volta sola: noi ne conserviamo solo l'impronta.
Authorization: Bearer ciamem_live_xxxxxxxxxxxxxxxxxxxxxxxx
| Scope | Consente |
|---|---|
contacts:read | Rubrica — lettura |
contacts:write | Rubrica — scrittura |
companies:read | Clienti — lettura |
companies:write | Clienti — scrittura |
tickets:read | Ticket — lettura |
tickets:write | Ticket — scrittura |
agents:read | Agenti — lettura |
agents:write | Agenti — pausa |
| Liste | paginate: ?limit= (max 200, default 50) e ?offset= → { items, total, limit, offset } |
|---|---|
| Limiti | 120 richieste/minuto per chiave · 30 scritture/minuto · 20 ticket/ora |
| Errori | { "error": { "code": "…", "message": "…" } } — il code è il contratto per il tuo software |
| Codice | HTTP | Quando |
|---|---|---|
chiave_mancante | 401 | Intestazione Authorization assente. |
chiave_non_valida | 401 | Chiave inesistente o revocata. |
piano_non_abilitato | 403 | Il pacchetto non è Enterprise. |
abbonamento_scaduto | 403 | Abbonamento scaduto. |
permesso_mancante | 403 | La chiave non ha lo scope richiesto. |
troppe_richieste | 429 | Oltre 120 richieste/minuto (o 30 scritture/minuto). |
troppi_ticket | 429 | Oltre 20 ticket in un'ora. |
dati_non_validi | 400 | Corpo della richiesta incompleto o errato. |
contatto_non_trovato | 404 | Contatto inesistente. |
azienda_non_trovata | 404 | Azienda inesistente. |
ticket_non_trovato | 404 | Ticket inesistente. |
agente_non_trovato | 404 | Agente inesistente. |
azienda_protetta | 400 | L'azienda "(anonimo)" non si modifica. |
endpoint_sconosciuto | 404 | Percorso non riconosciuto. |
/me
qualsiasi chiave
Identità della chiave
Verifica che la chiave funzioni: ritorna tenant, pacchetto, permessi e limiti.
curl "https://www.ciamem.com/api/v1/me" \ -H "Authorization: Bearer ciamem_live_…"
/contacts
contacts:read
Elenco dei contatti
La rubrica del tenant. Filtri: q (numero, nome o azienda), companyId.
Parametri: q · companyId · limit · offset
curl "https://www.ciamem.com/api/v1/contacts" \ -H "Authorization: Bearer ciamem_live_…"
/contacts/:number
contacts:read
Dettaglio di un contatto
Il contatto è identificato dal numero di telefono (o dall'id chat per i clienti Telegram).
curl "https://www.ciamem.com/api/v1/contacts/:number" \ -H "Authorization: Bearer ciamem_live_…"
/contacts/:number
contacts:write
Crea o aggiorna un contatto
Se il contatto non esiste viene creato.
{
"name": "Mario Rossi",
"company": "Acme SRL",
"companyId": "id azienda in anagrafica",
"notes": "Cliente storico",
"language": "it"
}
curl -X PUT "https://www.ciamem.com/api/v1/contacts/:number" \
-H "Authorization: Bearer ciamem_live_…" \
-H "content-type: application/json" \
-d '{"name":"Mario Rossi","company":"Acme SRL","companyId":"id azienda in anagrafica","notes":"Cliente storico","language":"it"}'
/contacts/:number
contacts:write
Elimina un contatto
Il bot non lo riconoscerà più alla chiamata successiva.
curl -X DELETE "https://www.ciamem.com/api/v1/contacts/:number" \ -H "Authorization: Bearer ciamem_live_…"
/companies
companies:read
Elenco dei clienti (aziende)
Filtri: q (nome o P.IVA), status (regolare | bloccato).
Parametri: q · status · limit · offset
curl "https://www.ciamem.com/api/v1/companies" \ -H "Authorization: Bearer ciamem_live_…"
/companies
companies:write
Crea un cliente
Lo stato "bloccato" impedisce al bot di aprire ticket per i contatti di quest'azienda.
{
"name": "Acme SRL",
"vat": "01234567890",
"status": "regolare",
"phone": "",
"email": "",
"address": "",
"notes": ""
}
curl -X POST "https://www.ciamem.com/api/v1/companies" \
-H "Authorization: Bearer ciamem_live_…" \
-H "content-type: application/json" \
-d '{"name":"Acme SRL","vat":"01234567890","status":"regolare","phone":"","email":"","address":"","notes":""}'
/companies/:id
companies:read
Dettaglio di un cliente
curl "https://www.ciamem.com/api/v1/companies/:id" \ -H "Authorization: Bearer ciamem_live_…"
/companies/:id
companies:write
Aggiorna un cliente
L'azienda predefinita "(anonimo)" non è modificabile.
{
"name": "Acme SRL",
"status": "bloccato"
}
curl -X PUT "https://www.ciamem.com/api/v1/companies/:id" \
-H "Authorization: Bearer ciamem_live_…" \
-H "content-type: application/json" \
-d '{"name":"Acme SRL","status":"bloccato"}'
/companies/:id
companies:write
Elimina un cliente
I contatti associati tornano sull'azienda "(anonimo)". I ticket già aperti restano.
curl -X DELETE "https://www.ciamem.com/api/v1/companies/:id" \ -H "Authorization: Bearer ciamem_live_…"
/tickets
tickets:read
Ricerca ticket
Filtri: status (aperto | assegnato | chiuso | aperti = tutti i non chiusi), companyId, agent, from, to (YYYY-MM-DD), q. Per la sincronizzazione incrementale usa updatedSince (ISO): ricevi solo i ticket cambiati.
Parametri: status · companyId · agent · from · to · q · updatedSince · limit · offset
curl "https://www.ciamem.com/api/v1/tickets" \ -H "Authorization: Bearer ciamem_live_…"
/tickets
tickets:write
Apre un ticket
Il ticket viene annunciato agli agenti su Telegram col bottone di presa in carico, come quelli aperti dal bot. Intestazione Idempotency-Key: un retry dopo un timeout non crea un doppione.
{
"text": "Stampante fiscale in blocco",
"companyId": "id azienda (facoltativo)",
"contactName": "Mario Rossi",
"contactKey": "+393331234567",
"priority": "normale | alta"
}
curl -X POST "https://www.ciamem.com/api/v1/tickets" \
-H "Authorization: Bearer ciamem_live_…" \
-H "content-type: application/json" \
-d '{"text":"Stampante fiscale in blocco","companyId":"id azienda (facoltativo)","contactName":"Mario Rossi","contactKey":"+393331234567","priority":"normale | alta"}'
/tickets/:id
tickets:read
Dettaglio di un ticket
Accetta l'id interno o il codice (TK-0001). Include la timeline e i metadati delle foto allegate.
curl "https://www.ciamem.com/api/v1/tickets/:id" \ -H "Authorization: Bearer ciamem_live_…"
/tickets/:id/entries
tickets:write
Aggiunge una nota al ticket
La nota entra nella timeline ed è visibile agli agenti.
{
"text": "Intervento pianificato per lunedì"
}
curl -X POST "https://www.ciamem.com/api/v1/tickets/:id/entries" \
-H "Authorization: Bearer ciamem_live_…" \
-H "content-type: application/json" \
-d '{"text":"Intervento pianificato per lunedì"}'
/tickets/:id
tickets:write
Aggiorna un ticket (priorità, chiusura)
Chiudendo il ticket il cliente viene avvisato sul canale chat da cui l'ha aperto. Accetta anche PUT.
{
"status": "chiuso",
"note": "Sostituita la scheda",
"priority": "alta"
}
curl -X PATCH "https://www.ciamem.com/api/v1/tickets/:id" \
-H "Authorization: Bearer ciamem_live_…" \
-H "content-type: application/json" \
-d '{"status":"chiuso","note":"Sostituita la scheda","priority":"alta"}'
/agents
agents:read
Elenco degli agenti
Gli agenti Telegram del tenant e il loro stato (in turno o in pausa).
curl "https://www.ciamem.com/api/v1/agents" \ -H "Authorization: Bearer ciamem_live_…"
/agents/:chatId
agents:write
Mette un agente in pausa o lo rimette in turno
In pausa non riceve nuovi ticket né notifiche, ma continua a gestire i ticket già suoi. Aggiungere o rimuovere agenti resta un'operazione da console.
{
"paused": true
}
curl -X PATCH "https://www.ciamem.com/api/v1/agents/:chatId" \
-H "Authorization: Bearer ciamem_live_…" \
-H "content-type: application/json" \
-d '{"paused":true}'
Usa Idempotency-Key con l'id dell'evento: se la rete cade e riprovi, non nasce un secondo ticket.
Salva l'ora dell'ultima sincronizzazione e chiedi GET /tickets?updatedSince=…: ricevi solo i ticket cambiati.
Metti l'azienda a status: "bloccato": il bot smetterà di aprire ticket per i suoi contatti e li inviterà a contattare l'amministrazione.
Documentazione generata dal codice: rispecchia sempre gli endpoint attivi su questo server.