QRinio

QRinio API v1

Documentação da API

Gere recursos QR dinâmicos e ligações curtas a partir do servidor. Começa com autenticação, repetições seguras e revisões.

1. Autenticação

Verifica o email e cria uma chave API nas definições. Envia-a como token Bearer do servidor. Suporta recursos, ficheiros, designs e leitura de quotas e espaços. Segurança da conta, domínios e administração exigem sessão no navegador. Não exponhas chaves no cliente.

2. Criar um recurso

O exemplo cria um redirecionamento QR e uma ligação curta no domínio predefinido. Partilham destino e usam as respetivas quotas. A resposta inclui ID, slug e revisão. Representa /r/ como QR e partilha /s/ como ligação curta. A API devolve dados, não imagens.

Pedido de exemplo
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
}'
Excerto da resposta
{
  "id": "00000000-0000-4000-8000-000000000042",
  "slug": "sample-code",
  "revision": 1
}

3. Atualizar sem substituir colegas

Lê o recurso e envia a revisão atual com PATCH. Em revision_conflict (409), volta a ler e concilia alterações antes de repetir. DELETE com ?revision= move para o lixo; restauração disponível por 30 dias. A eliminação definitiva é separada. Arquivo e lixo continuam a contar.

Pedido de exemplo
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. Repetições e lotes seguros

Reutiliza Idempotency-Key e corpo idêntico ao repetir uma criação. As chaves duram 24 horas; outro corpo com a mesma chave devolve 409. Lotes exigem chave e 1–100 itens com chaves de linha distintas. Cada item tem estado próprio; HTTP 200 não garante todas as linhas. Guarda os resultados.

Pedido de exemplo
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 e erros

Consulta /quotas para limites atuais e exceções. Chaves e sessões partilham limites de pedidos; espaços usam a quota do titular. Em 429 respeita Retry-After e espera. Usa code para tratar erros; message é diagnóstico. Não repitas automaticamente erros de validação, permissões ou quota.

Leituras por minuto
120
Escritas por minuto
30
Lotes por minuto
2

Referência de endpoints

Lista recursos com page (desde 1), pageSize (1–100), q, status e workspaceId. Sem workspaceId só aparecem pessoais. Ficheiros usam limit (1–200), offset, search e kind=pdf ou image. Perfis, ligações e PDF alojados exigem published=true para serem públicos.

Referência de endpoints
GET /resourcesTudo em um só lugar.
POST /resourcesCriar código QR
GET · PATCH · DELETE /resources/{id}Editar
POST /resources/batchImportar CSV
POST /resources/bulkDefinir pasta e etiquetas
GET /resources/{id}/analytics?days=30Estatísticas
GET /resources/{id}/historyHistórico de versões
GET · POST /assetsArquivos
GET /quotasComeça grátis. Com limites claros.
GET /workspacesEspaços