API v1
Uma API para códigos que continuam impressos.
{ "id": "qr_8841ce2mxk", "type": "url", "dynamic": true, "status": "active", "shortUrl": "https://dotwick.co/Xq7mK2p", "createdAt": "2026-09-10T09:41:08.000Z"}Uma API REST sobre os mesmos objetos que o app usa. Crie códigos, mude destinos, consulte escaneamentos e exporte arquivos prontos para impressão. Sem SDK: curl, fetch ou requests bastam.
incluída a partir do Pro · 60 req/min no Pro, 600 no Business
Crie as chaves no app em Configurações → API, só com os escopos de que precisam.
curl -X POST https://api.dotwick.com/v1/codes \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: van-014-2026-09-10" \ -d '{ "name": "Van fleet – unit 14", "content": { "type": "url", "url": "https://example.com/fleet/van-014" }, "design": { "pattern": "rounded", "eyes": { "frame": "circle", "ball": "circle" }, "colors": { "fg": "#18181B", "bg": "#FFFFFF" } }, "folderId": "fld_8k2m4q7x" }'{ "id": "qr_8841ce2mxk", "name": "Van fleet – unit 14", "type": "url", "dynamic": true, "status": "active", "slug": "Xq7mK2p", "shortUrl": "https://dotwick.co/Xq7mK2p", "content": { "type": "url", "url": "https://example.com/fleet/van-014" }, "folderId": "fld_8k2m4q7x", "createdAt": "2026-09-10T09:41:08.000Z"}api.dotwick.com/v1
REST sobre JSON
Recursos previsíveis, paginação por cursor e chaves de idempotência em todo POST. Os erros voltam como { error: { code, message, requestId } }.
11 tipos de evento
Webhooks
Escaneamentos, alterações de códigos, execuções em massa e exportações concluídas, status de domínios e respostas de formulários. Assinados conforme o Standard Webhooks e reenviados por 24 horas.
POST /v1/codes/bulk
Em massa e exportações
Crie até 500 códigos em uma requisição e baixe tudo em SVG, PNG, PDF ou EPS em um único ZIP gerado em segundo plano.
api.dotwick.com/openapi.json
OpenAPI
Toda rota pública é descrita em OpenAPI 3.1, gerado a partir dos mesmos contratos com que a API valida, e cada operação indica o escopo de que precisa.
- POST/v1/codes
- GET/v1/codes
- GET/v1/codes/{id}
- PATCH/v1/codes/{id}
- DELETE/v1/codes/{id}
- POST/v1/codes/bulk
- GET/v1/codes/{id}/scans
- POST/v1/webhooks
Endpoints
Todas as rotas que uma chave de API pode chamar. O resto, como cobrança, membros e gerenciamento de chaves, fica no app.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| Códigos | |||
| GET | /v1/codes | codes:read | Lista os códigos, com filtro por pasta, tipo ou status |
| POST | /v1/codes | codes:write | Cria um código |
| GET | /v1/codes/{id} | codes:read | Busca um código com seu design e suas regras |
| PATCH | /v1/codes/{id} | codes:write | Altera destino, nome, design e regras |
| DELETE | /v1/codes/{id} | codes:write | Exclui um código (o link curto responde 410) |
| POST | /v1/codes/move | codes:write | Move códigos para uma pasta |
| POST | /v1/codes/move-domain | codes:write | Move códigos para outro domínio |
| POST | /v1/codes/tags | codes:write | Adiciona ou remove tags em vários códigos |
| POST | /v1/codes/{id}/duplicate | codes:write | Duplica um código |
| PATCH | /v1/codes/bulk | codes:write | Pausa, retoma, arquiva, marca com tags, move ou exclui vários códigos |
| GET | /v1/utm-presets | codes:read | Lista as predefinições de UTM salvas |
| GET | /v1/codes/{id}/versions | codes:read | Histórico de destinos de um código |
| GET | /v1/codes/{id}/activity | codes:read | Feed de atividades de um código |
| GET | /v1/codes/{id}/export | codes:read | Baixa em SVG, PNG, JPG, PDF ou EPS |
| GET | /v1/codes/{id}/hosted-stats | codes:read | Contadores de um código hospedado |
| GET | /v1/codes/{id}/submissions | submissions:read | Respostas a um código de formulário |
| GET | /v1/codes/{id}/submissions/export | submissions:read | Respostas do formulário em CSV |
| GET | /v1/gs1/products | codes:read | Lista os produtos GS1 (os códigos gs1) |
| GET | /v1/codes/{id}/gs1/qualifiers | codes:read | Níveis de lote, CPV e serial de um código GS1 |
| GET | /v1/codes/{id}/gs1/print-runs | codes:read | Tiragens de um código GS1 |
| GET | /v1/codes/{id}/gs1/print-runs/{runId} | codes:read | Consulta uma tiragem e obtém os links dos arquivos |
| Execuções em massa | |||
| POST | /v1/codes/bulk | codes:write | Cria até 500 códigos em uma única execução |
| GET | /v1/bulk-imports | codes:read | Lista as execuções em massa |
| GET | /v1/bulk-imports/{id} | codes:read | Consulta uma execução em massa |
| GET | /v1/bulk-imports/{id}/rows | codes:read | Linhas de uma execução em massa |
| GET | /v1/bulk-imports/{id}/results.csv | codes:read | Resultados de uma execução em CSV |
| POST | /v1/bulk-imports/{id}/cancel | codes:write | Cancela uma execução na fila ou em andamento |
| POST | /v1/bulk-imports/{id}/retry | codes:write | Tenta de novo as linhas com falha de uma execução |
| Estatísticas | |||
| GET | /v1/analytics/summary | analytics:read | Totais de escaneamentos em um período |
| GET | /v1/analytics/timeseries | analytics:read | Escaneamentos ao longo do tempo |
| GET | /v1/analytics/breakdown | analytics:read | Principais países, dispositivos e mais |
| GET | /v1/analytics/scans | analytics:read | Registros de cada escaneamento |
| GET | /v1/analytics/sparklines | analytics:read | Contagens diárias por código |
| GET | /v1/analytics/compare | analytics:read | Compara até 4 códigos |
| GET | /v1/analytics/export | analytics:read | Escaneamentos em CSV (períodos curtos) |
| POST | /v1/analytics/exports | analytics:read | Escaneamentos em CSV, preparados em segundo plano |
| GET | /v1/codes/{id}/analytics/summary | analytics:read | Totais de um código |
| GET | /v1/codes/{id}/analytics/timeseries | analytics:read | Um código ao longo do tempo |
| GET | /v1/codes/{id}/analytics/breakdown | analytics:read | Os rankings de um código |
| GET | /v1/codes/{id}/scans | analytics:read | Registros de cada escaneamento de um código |
| GET | /v1/codes/{id}/gs1/batches | analytics:read | Escaneamentos por lote de um código GS1 |
| GET | /v1/codes/{id}/downloads | analytics:read | Downloads por arquivo de um código de Documentos |
| GET | /v1/analytics/locations | analytics:read | Mapa GPS dos escaneamentos com consentimento |
| GET | /v1/codes/{id}/analytics/locations | analytics:read | Mapa GPS de um código |
| GET | /v1/alerts | analytics:read | Lista as regras de alerta de escaneamento |
| Exportações | |||
| POST | /v1/exports | codes:read | Exporta vários códigos em um único ZIP |
| GET | /v1/exports | codes:read | Lista as exportações |
| GET | /v1/exports/{id} | codes:read | Consulta uma exportação e obtém o link do ZIP |
| Pastas | |||
| GET | /v1/folders | folders:read | Lista as pastas |
| POST | /v1/folders | folders:write | Cria uma pasta |
| GET | /v1/folders/{id} | folders:read | Busca uma pasta |
| PATCH | /v1/folders/{id} | folders:write | Renomeia ou move uma pasta |
| DELETE | /v1/folders/{id} | folders:write | Exclui uma pasta (os códigos sobem um nível) |
| Modelos | |||
| GET | /v1/templates | templates:read | Lista os modelos de design |
| POST | /v1/templates | templates:write | Cria um modelo |
| GET | /v1/templates/{id} | templates:read | Busca um modelo |
| PATCH | /v1/templates/{id} | templates:write | Altera um modelo |
| DELETE | /v1/templates/{id} | templates:write | Exclui um modelo |
| Uploads | |||
| POST | /v1/assets | codes:write | Envia um logo ou um arquivo |
| GET | /v1/assets/{id} | codes:read | Busca um upload com uma URL assinada |
| Domínios | |||
| GET | /v1/domains | domains:read | Lista os domínios personalizados |
| GET | /v1/domains/{id} | domains:read | Busca um domínio e seu status |
| GET | /v1/subdomain | domains:read | O subdomínio do espaço de trabalho e seus links |
| GET | /v1/subdomain/availability | domains:read | Verifica se um nome de subdomínio está livre |
| Espaço de trabalho | |||
| GET | /v1/workspaces/current | qualquer chave | O espaço de trabalho da chave e o plano |
| GET | /v1/usage | qualquer chave | Limites do plano e uso neste mês |
| Webhooks | |||
| GET | /v1/webhooks | webhooks:read | Lista os endpoints de webhook |
| POST | /v1/webhooks | webhooks:write | Registra um endpoint e os tipos de evento |
| GET | /v1/webhooks/{id} | webhooks:read | Busca um endpoint |
| PATCH | /v1/webhooks/{id} | webhooks:write | Altera ou reativa um endpoint |
| DELETE | /v1/webhooks/{id} | webhooks:write | Exclui um endpoint |
| POST | /v1/webhooks/{id}/test | webhooks:write | Envia um evento webhook.test |
| GET | /v1/webhooks/{id}/deliveries | webhooks:read | Entregas de um endpoint |
| GET | /v1/webhooks/{id}/deliveries/{deliveryId} | webhooks:read | Uma entrega com suas tentativas |
| POST | /v1/webhooks/{id}/deliveries/{deliveryId}/redeliver | webhooks:write | Envia uma entrega de novo |
| POST | /v1/webhooks/{id}/recover | webhooks:write | Reenvia as entregas com falha |
| Tags | |||
| GET | /v1/tags | tags:read | Lista as tags |
| POST | /v1/tags | tags:write | Cria uma tag |
| GET | /v1/tags/{id} | tags:read | Busca uma tag |
| PATCH | /v1/tags/{id} | tags:write | Renomeia uma tag ou muda sua cor |
| DELETE | /v1/tags/{id} | tags:write | Exclui uma tag (ela é removida dos seus códigos) |
| Relatórios | |||
| POST | /v1/reports | analytics:read | Gera um relatório de estatísticas em PDF ou CSV |
| GET | /v1/reports | analytics:read | Lista os relatórios gerados |
| GET | /v1/reports/{id} | analytics:read | Consulta um relatório e obtém o link |
| Hooks do Zapier e do Make | |||
| GET | /v1/hooks | webhooks:read | Lista os hooks de integração |
| POST | /v1/hooks | webhooks:write | Inscreve um hook em um evento |
| DELETE | /v1/hooks/{id} | webhooks:write | Cancela a inscrição de um hook |
| GET | /v1/hooks/samples/{event} | webhooks:read | Eventos recentes de um tipo, como amostra para um gatilho |
| Cartões de visita | |||
| GET | /v1/cards | cards:read | Lista os cartões de visita da equipe |
| POST | /v1/cards | cards:write | Cria um cartão de visita |
| GET | /v1/cards/{id} | cards:read | Busca um cartão de visita |
| PATCH | /v1/cards/{id} | cards:write | Altera um cartão de visita |
| POST | /v1/cards/{id}/deactivate | cards:write | Desativa um cartão de visita |
| GET | /v1/cards/{id}/analytics | cards:read | Visualizações, salvamentos e toques de um cartão |
| Conversões | |||
| POST | /v1/conversions | conversions:write | Registra uma conversão |
| GET | /v1/analytics/funnel | analytics:read | Funil do escaneamento à receita |
| Tags NFC | |||
| GET | /v1/nfc/tags | codes:read | Lista as tags NFC |
| POST | /v1/nfc/tags | codes:write | Registra uma tag NFC em um código |
Os esquemas de requisição e resposta de cada rota estão na referência da API e no documento OpenAPI. Referência da API →
Limites de requisições
- Pro
- 60 req/min · burst 20 / 10 s
- Business
- 600 req/min · burst 200 / 10 s
- Enterprise
- sob medida
- Jobs de exportação e em massa · Pro / Business
- 2 simultâneas / 5 simultâneas
- Os limites valem por espaço de trabalho e são compartilhados por todas as suas chaves de API
- Bursts: no máximo 2× a taxa por minuto em qualquer janela de 10 segundos
- Respostas 429 trazem Retry-After em segundos
- Toda resposta traz X-RateLimit-Limit, -Remaining e -Reset (segundos até a janela zerar)
- Todo POST aceita um header Idempotency-Key, respeitado por 24 horas
Autenticação
Envie a sua chave secreta como bearer token. As chaves começam com sk_live_, aparecem uma única vez na criação, têm escopos e agem no seu espaço de trabalho com o papel de quem as criou, no máximo Editor.
Autenticação e escopos →