Pikatopikato.
Développeurs

Intégrez la planification à votre produit

Pikato est API-first. Tout ce que fait l’application est accessible via une REST API documentée — pour automatiser les sondages, brancher les résultats sur vos propres outils et réagir aux réponses en temps réel.


Tout ce que fait l’interface, par programmation

Créez des sondages, ajoutez des créneaux, envoyez des réponses et lisez la matrice complète des résultats via une REST API claire. Tout ce que vous faites à la main, vous pouvez l’automatiser.

Des résultats exploitables

Récupérez la matrice agrégée Oui/Peut-être/Non par créneau, trouvez le créneau gagnant et exportez n’importe quel événement dans un fichier calendrier ICS directement depuis l’API.

Webhooks en temps réel

Abonnez-vous aux événements — nouvelles réponses, créneaux validés — et recevez des callbacks signés par HMAC et horodatés pour que vos systèmes réagissent dès qu’un changement survient. Aucun polling nécessaire.

Clés API à portées limitées

Émettez et révoquez des jetons avec des permissions granulaires (events:read, events:write, responses:read, webhooks:manage). N’accordez à chaque intégration que ce dont elle a besoin.

OAuth2 pour les tiers

Créez des applications pour le compte d’autres comptes avec le grant client-credentials. Échangez vos identifiants sur POST /oauth/token et limitez le jeton obtenu exactement à l’accès dont vous avez besoin.

Réessais sans risque

Les clés d’idempotence rendent les requêtes d’écriture sûres à répéter — une connexion interrompue ou un réessai ne crée jamais de sondage ni de réponse en double.


Exemples rapides

Lister vos sondages actifs

Récupérez vos sondages enregistrés et gardez ceux qui collectent encore des réponses (statut « open »). Nécessite une clé API avec la permission 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`);
});

Voir qui a répondu et ce qu’ils ont choisi

Récupérez la matrice participant × créneau d’un sondage et listez le nom de chaque personne avec son choix Oui / Peut-être / Non pour chaque créneau. Nécessite la permission 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}`);
});

Authentifiez chaque requête avec une clé API Bearer depuis votre compte. La référence complète des endpoints — y compris les curseurs de pagination et le format des erreurs — se trouve dans la Documentation API ↗.


Offre gratuite

1 000 appels API / mois · 60 requêtes / minute, sondages illimités, 10 enregistrés dans votre compte, plus les webhooks et les clés à permissions fines. Au-delà de ce quota, un abonnement est nécessaire. Les invitations par e-mail sont facturées séparément en crédits.