Integra la pianificazione nel tuo prodotto
Pikato è API-first. Tutto ciò che fa l’app è disponibile tramite una REST API documentata — così puoi automatizzare i sondaggi, collegare i risultati ai tuoi strumenti e reagire alle risposte in tempo reale.
Tutto ciò che fa l’interfaccia, a livello programmatico
Crea sondaggi, aggiungi fasce orarie, invia risposte e leggi l’intera matrice dei risultati tramite una REST API pulita. Tutto ciò che puoi fare manualmente, puoi automatizzarlo.
Risultati su cui agire
Recupera la matrice aggregata Sì/Forse/No per ogni fascia oraria, trova l’orario vincente ed esporta qualsiasi evento come file di calendario ICS direttamente dall’API.
Webhook in tempo reale
Iscriviti agli eventi — nuove risposte, orari definiti — e ricevi callback firmati con HMAC e provvisti di timestamp, così i tuoi sistemi reagiscono nel momento stesso in cui qualcosa cambia. Nessun polling richiesto.
Chiavi API con ambiti
Emetti e revoca token con abilità granulari (events:read, events:write, responses:read, webhooks:manage). Concedi a ogni integrazione solo ciò di cui ha bisogno.
OAuth2 per terze parti
Crea app per conto di altri account con il grant client-credentials. Scambia le credenziali su POST /oauth/token e limita il token risultante esattamente all’accesso di cui hai bisogno.
Ripetibile in sicurezza
Le chiavi di idempotenza rendono sicure le richieste di scrittura ripetibili — una connessione interrotta o un nuovo tentativo non crea mai un sondaggio o una risposta duplicati.
Esempi rapidi
Elenca i tuoi sondaggi attivi
Recupera i sondaggi salvati e mantieni quelli che stanno ancora raccogliendo risposte (stato "open"). Richiede una chiave API con l’abilità events:read.
const API = 'https://your-domain.example/api/v1';
const TOKEN = 'pk_live_…'; // API key with events:read
const res = await fetch(`${API}/account/events`, {
headers: { Authorization: `Bearer ${TOKEN}`, Accept: 'application/json' },
});
const { data } = await res.json();
// Keep only polls still open for responses (the other status is "finalized").
const active = data.filter((poll) => poll.status === 'open');
active.forEach((poll) => {
console.log(poll.id, poll.title, `${poll.participant_count} responses`);
});Leggi chi ha risposto e cosa ha scelto
Recupera la matrice partecipante × fascia oraria per un sondaggio ed elenca il nome di ciascuna persona con la sua scelta Sì / Forse / No per ogni fascia oraria. Richiede l’abilità responses:read.
const API = 'https://your-domain.example/api/v1';
const TOKEN = 'pk_live_…'; // API key with responses:read
const eventId = 'evt_…';
const res = await fetch(`${API}/events/${eventId}/responses`, {
headers: { Authorization: `Bearer ${TOKEN}`, Accept: 'application/json' },
});
const { data } = await res.json();
// Map slot id -> readable label so answers aren't just ids.
const slotLabel = Object.fromEntries(
data.slots.map((s) => [s.id, s.starts_at ?? s.location ?? s.id]),
);
// One row per participant: their name and their choice for each slot.
data.participants.forEach((p) => {
const choices = Object.entries(p.answers)
.map(([slotId, value]) => `${slotLabel[slotId]}: ${value}`)
.join(', ');
console.log(`${p.display_name} → ${choices}`);
});Autentica ogni richiesta con una chiave API Bearer dal tuo account. Il riferimento completo degli endpoint — inclusi i cursori di paginazione e le strutture di errore — è nella Documentazione API ↗.
1.000 chiamate API / mese · 60 richieste / minuto, sondaggi illimitati, 10 salvati nel tuo account, più webhook e chiavi con permessi. Oltre quel limite serve un abbonamento. Gli inviti via email si pagano a parte con i crediti.