Dexyd DevelopersREST v1, MCP, webhooks et clés API
Console

Clés API

Génération live/test, expiration, rotation, révocation et affichage du secret une seule fois.

Scopes

Contrôle par périmètre: lecture publique, concours, soumissions, Expo, exports, MCP et brouillons.

Webhooks

Événements sortants signés pour synchroniser CRM, automatisations, BI ou outils internes.

Quick start

1

Activez Organisateur Pro

Les intégrations API standard sont incluses dans ce plan. Les demandes white-label et intégrations complexes restent traitées séparément.

2

Créez une clé

Dans la console développeur, choisissez le mode live ou test, les scopes et une expiration adaptée.

3

Appelez REST v1

Envoyez la clé dans Authorization Bearer ou x-dexyd-api-key et lisez les en-têtes de rate limit.

bash
curl "https://www.dexyd.com/api/v1/competitions?limit=10" \
  -H "Authorization: Bearer dxyd_live_xxxxx_xxxxxxxxx" \
  -H "Accept: application/json"

Authentification

Les clés API sont créées depuis la console Dexyd. Le secret complet est affiché une seule fois; Dexyd stocke uniquement le hash et le préfixe public.

Formats de clé

dxyd_live_... pour production.

dxyd_test_... pour sandbox, tests et connecteurs non critiques.

Headers acceptés

Authorization: Bearer <dxyd_key>

x-dexyd-api-key: <dxyd_key>

Scopes v1

public:read

Lecture publique

Lire les données publiques Dexyd utiles aux agents, recherches et intégrations.

competitions:read

Concours

Lister et consulter les concours visibles par le propriétaire de la clé.

submissions:read

Soumissions

Lire les soumissions et signaux associés lorsque le compte y a accès.

expo:read

Zone Expo

Lire les produits Expo publics ou rattachés au compte organisateur.

exports:read

Exports

Extraire des données structurées pour reporting, CRM, BI ou synchronisation.

media:import

Import média

Autoriser un connecteur à importer des médias dans un flux Dexyd contrôlé.

agent:mcp

Agent MCP

Connecter un client MCP ou un agent externe aux outils Dexyd autorisés.

drafts:write

Brouillons

Créer des brouillons Dexyd qui restent validables par l'utilisateur dans l'app.

REST API v1

Les routes publiques versionnées servent les intégrations. Elles ne remplacent pas les routes UI et n'exposent jamais directement Supabase.

EndpointScopeParam?tres
GET/api/v1/competitionsListe paginée des concours accessibles.competitions:readlimit, offset, status, category
GET/api/v1/submissionsListe paginée des soumissions accessibles.submissions:readlimit, offset, competition_id, status
GET/api/v1/expo-productsProduits Expo publics ou rattachés au compte.expo:readlimit, offset, status, category
GET/api/v1/exports/competitionsExport structuré des concours pour BI, CRM ou archivage.exports:readformat=json, limit, offset

MCP

Le endpoint MCP Dexyd reste disponible sur /api/agent/mcp. Il accepte maintenant les clés développeur avec le scope agent:mcp, tout en gardant la compatibilité avec l'ancien token connecteur.

json
{
  "mcpServers": {
    "dexyd": {
      "url": "https://www.dexyd.com/api/agent/mcp",
      "headers": {
        "Authorization": "Bearer dxyd_live_xxxxx_xxxxxxxxx"
      }
    }
  }
}

Webhooks

Configurez une URL sortante, choisissez les événements et utilisez le secret whsec_... pour vérifier chaque livraison.

competition.createdcompetition.updatedsubmission.createdsubmission.updatedexpo_product.createdexpo_product.updatedexpo_product.bid.createdexpo_product.inquiry.createdtest.ping
X-Dexyd-Event nom de l'événement.X-Dexyd-Delivery identifiant unique de livraison.X-Dexyd-Timestamp timestamp Unix en secondes.X-Dexyd-Signature signature t=...,v1=....
ts
import crypto from 'node:crypto'

export function verifyDexydWebhook({ secret, timestamp, body, signature }) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${timestamp}.${body}`)
    .digest('hex')

  return signature.includes(`v1=${expected}`)
}

Erreurs

Les erreurs suivent un format stable pour permettre une gestion uniforme côté client.

json
{
  "code": "DEVELOPER_API_SCOPE_REQUIRED",
  "message": "Developer API key scope is insufficient",
  "details": {
    "required_scopes": ["competitions:read"]
  }
}
400INVALID_REQUESTParamètre ou corps de requête invalide.
401DEVELOPER_API_KEY_INVALIDClé absente, mal formée, expirée ou révoquée.
402DEVELOPER_PLATFORM_PLAN_REQUIREDLe compte doit être sur Organisateur Pro.
403DEVELOPER_API_SCOPE_REQUIREDLa clé existe mais le scope requis manque.
429RATE_LIMITEDLa limite minute ou jour est atteinte.
503DEVELOPER_PLATFORM_NOT_CONFIGUREDLe schéma Supabase développeur doit être appliqué.

Rate limits

Chaque clé possède une limite par minute et par jour. Les réponses API renvoient toujours les en-têtes utiles quand la clé est valide.

X-RateLimit-Limit limite de la fenêtre active.X-RateLimit-Remaining appels restants.X-RateLimit-Reset timestamp de reset.

Exemples

cURL

bash
curl "https://www.dexyd.com/api/v1/competitions?limit=10" \
  -H "Authorization: Bearer dxyd_live_xxxxx_xxxxxxxxx" \
  -H "Accept: application/json"

JavaScript

ts
const response = await fetch('https://www.dexyd.com/api/v1/competitions?limit=10', {
  headers: {
    Authorization: 'Bearer dxyd_live_xxxxx_xxxxxxxxx',
    Accept: 'application/json'
  }
})

if (!response.ok) {
  const error = await response.json()
  throw new Error(error.message || error.code)
}

const data = await response.json()