Pikatopikato.
Sviluppatori

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 ↗.


Piano gratuito

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.