Crear un código
POST/v1/codes
Parámetros del cuerpo
namestringobligatorioEtiqueta interna del código: nunca se muestra a quien escanea.content.typestringobligatorioUno de los tipos de código admitidos, p. ej. url, vcard, wifi.content.urlstringobligatorioDestino de un código url. Los campos obligatorios varían según el tipo.dynamicbooleanopcionalPor defecto true: un enlace corto que puedes redirigir. false codifica el contenido directamente.designobjectopcionalPatrón, forma de los ojos y colores. Por defecto, el diseño predeterminado de Dotwick.folderIdstringopcionalCarpeta en la que archivar el código. Obligatorio para las claves restringidas a carpetas.templateIdstringopcionalUna plantilla de diseño guardada que se aplica en lugar de design.domainIdstring | nullopcionalDominio corto personalizado (próximamente: los dominios propios aún no están activados). Omitido = el predeterminado del espacio de trabajo; null = el dominio compartido.slugstringopcionalUn slug de enlace corto propio en lugar de uno generado. Debe ser único en el dominio.Solicitud de ejemplo
solicitudPOST /v1/codes
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" }'respuesta201 Createdextracto: el objeto completo también incluye diseño, reglas y marcas de tiempo
{ "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"}Errores
400validation_failedEl cuerpo no superó la validación del esquema: consulta error.details para ver los problemas.401unauthorizedCabecera Authorization ausente o no válida.403forbiddenLa clave no tiene codes:write, o está restringida a otras carpetas.403plan_limit_reachedSe alcanzó el límite de códigos dinámicos del plan.409conflictEl slug ya está en uso en este dominio.422idempotency_conflictLa Idempotency-Key se reutilizó con un cuerpo distinto.422unsafe_destinationEl destino no superó la comprobación de Google Web Risk y de la lista de bloqueo.429rate_limitedSe superó el presupuesto por minuto o de ráfaga: consulta Retry-After.