QRinio

QRinio API v1

Documentation API

Gère les ressources QR dynamiques et liens courts depuis ton serveur. Commence par l’authentification, les reprises sûres et les révisions.

1. S’authentifier

Vérifie ton e-mail et crée une clé API dans les réglages. Envoie-la en jeton Bearer depuis ton serveur. Les clés permettent ressources, fichiers, designs et lecture des quotas et espaces. Sécurité du compte, domaines et administration nécessitent une session navigateur. N’expose jamais la clé côté client.

2. Créer une ressource

L’exemple crée une redirection QR et un lien court sur le domaine par défaut. Ils partagent une destination et consomment leurs quotas respectifs. La réponse contient ID, slug et révision. Dessine l’adresse /r/ en QR et partage /s/ comme lien court. L’API renvoie des données, pas une image.

Exemple de requête
curl --request POST 'https://qrinio.com/api/v1/resources' \
  --header "Authorization: Bearer $QRINIO_API_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: product-42-v1' \
  --data '{
  "title": "Product 42",
  "targetUrl": "https://example.com/products/42",
  "qrEnabled": true,
  "shortEnabled": true
}'
Extrait de réponse
{
  "id": "00000000-0000-4000-8000-000000000042",
  "slug": "sample-code",
  "revision": 1
}

3. Mettre à jour sans écraser les collègues

Lis la ressource et envoie sa révision actuelle avec PATCH. En cas de revision_conflict (409), relis et réconcilie les changements avant de réessayer. DELETE avec ?revision= place en corbeille ; restauration possible pendant 30 jours. La suppression définitive est séparée. Archives et corbeille comptent toujours.

Exemple de requête
curl --request PATCH 'https://qrinio.com/api/v1/resources/00000000-0000-4000-8000-000000000042' \
  --header "Authorization: Bearer $QRINIO_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "revision": 1,
  "targetUrl": "https://example.com/products/42-v2"
}'

4. Reprises et lots sûrs

Réutilise le même Idempotency-Key et le corps identique pour reprendre une création. Conservation de 24 heures ; un autre corps avec la même clé renvoie 409. Les lots exigent une clé et 1–100 éléments aux clés de ligne distinctes. Chaque élément a son statut ; HTTP 200 ne garantit pas toutes les lignes. Conserve les résultats.

Exemple de requête
curl --request POST 'https://qrinio.com/api/v1/resources/batch' \
  --header "Authorization: Bearer $QRINIO_API_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: catalog-batch-42-v1' \
  --data '{
  "items": [
    {
      "key": "product-42",
      "data": {
        "title": "Product 42",
        "targetUrl": "https://example.com/products/42",
        "qrEnabled": true,
        "shortEnabled": true
      }
    }
  ]
}'

Limites et erreurs

Consulte /quotas pour les limites actuelles et exceptions. Clés et sessions partagent les limites de requêtes ; les espaces utilisent le quota du propriétaire. Sur 429, respecte Retry-After et attends. Utilise code pour traiter l’erreur ; message sert au diagnostic. Ne répète pas automatiquement validation, droits ou quota.

Lectures par minute
120
Écritures par minute
30
Lots par minute
2

Référence des endpoints

Liste les ressources avec page (dès 1), pageSize (1–100), q, status et workspaceId. Sans workspaceId, seuls les éléments personnels apparaissent. Les fichiers utilisent limit (1–200), offset, search et kind=pdf ou image. Les profils, liens et PDF hébergés exigent published=true.

Référence des endpoints
GET /resourcesTout au même endroit.
POST /resourcesCréer un code QR
GET · PATCH · DELETE /resources/{id}Modifier
POST /resources/batchImport CSV
POST /resources/bulkDéfinir le dossier et les tags
GET /resources/{id}/analytics?days=30Statistiques
GET /resources/{id}/historyHistorique des versions
GET · POST /assetsFichiers
GET /quotasCommence gratuitement. Des limites claires.
GET /workspacesEspaces