# Atomicat API > Complete documentation for Large Language Models --- ## Document: Webhooks Subscribe to account events on a public HTTPS URL. URL: https://docs.atomicat.ai/webhooks # Webhooks Create a subscription with `POST /hooks`. Atomicat sends an HTTP POST to `target_url` when the event happens. ```bash curl -X POST "https://automation.atomicat-api.com/api/automation/v1/hooks" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "target_url": "https://example.com/atomicat", "event_type": "form_lead.created" }' ``` The response includes the subscription `id`. It does not repeat the target URL. `DELETE /hooks/{subscriptionId}` turns the subscription off. Deliveries stop. ## Events | `event_type` | When it is sent | | --- | --- | | `form_lead.created` | A form submission is stored | | `quiz_lead.created` | A quiz submission is stored | | `page.created` | A page is created | | `page.published` | A page is published | | `product.created` | A product is created | | `funnel.created` | A funnel is created | | `site.created` | A site is created | | `project.created` | A project is created | There is no `video.uploaded` event. After an upload in the Atomicat app, poll `GET /videos`. `GET /hooks/sample/{eventType}` returns one example object inside an array. Use it to build the receiver before you subscribe. ## URL rules `target_url` must be HTTPS on a public host. These are rejected: - `http://` URLs - URLs with a username or password - `localhost`, `.local`, and `.internal` - private, loopback, and link-local addresses, including cloud metadata addresses - a hostname that resolves to one of those addresses The host is checked again immediately before delivery. ## Receiver Respond with a `2xx` status. Treat the body as JSON. The sample endpoint shows the fields for each event. Store the event `id` if you need to ignore a repeat delivery. --- ## Document: Requests Pagination, errors, and rate limits. URL: https://docs.atomicat.ai/requests # Requests Send JSON for request bodies. The API accepts up to 1 MB. ``` Content-Type: application/json ``` ## Lists Most lists use `limit` and `page`. - `limit` defaults to 50 and cannot exceed 100. - `page` starts at 0. Page 1 skips the first `limit` records. - `GET /videos` uses `skip` instead of `page`. - `GET /search/leads` defaults to 25 and cannot exceed 50. The response is an array. An empty result is `[]`. Search routes also return an array when you pass an exact id. ## Errors Errors use a stable `error` code and a `message`. | Status | Code | Meaning | | --- | --- | --- | | 400 | `invalid_request` | A required field is missing or a value is invalid | | 401 | `missing_token` | No bearer token was sent | | 401 | `invalid_token` | The key is unknown, expired, or revoked | | 403 | `insufficient_scope` | The key does not include the scope | | 403 | `ip_not_allowed` | The caller IP is outside the key allowlist | | 404 | `not_found`, `page_not_found`, `project_not_found` | The record is missing or belongs to another account | | 409 | `project_in_use` | The project still has pages, products, sites, or funnels | | 429 | `rate_limited` | The key sent more than 5,000 requests in 10 minutes | ```json { "error": "invalid_request", "message": "name is required." } ``` ## Rate limits | Window | Limit | Applies to | | --- | --- | --- | | 10 minutes | 5,000 requests | Each API key | | 15 minutes | 60,000 requests | Each IP, across the host | When you hit a limit, wait for the window and retry. The response includes standard rate-limit headers. ## What is not in this API Key creation, revocation, and the activity log use the logged-in Atomicat app. They are not available to an API key. Internal event routes used by Atomicat services are also omitted. --- ## Document: Introduction What the Atomicat API can do, and how the docs stay in sync with the spec. URL: https://docs.atomicat.ai/introduction # Introduction The Atomicat API is an HTTPS API for the account that owns the key. Use it to create and publish pages, manage sites, funnels, videos, and products, read leads, and receive webhooks. Production base URL: ```text https://automation.atomicat-api.com/api/automation/v1 ``` ```bash curl "https://automation.atomicat-api.com/api/automation/v1/me" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" ``` ## What you can do | Area | What the API covers | | --- | --- | | Projects | List, create, update, and delete a project that nothing else still uses | | Sites | List, create, and read. Sites are not deleted through this API | | Pages | Create, duplicate, edit, publish, and delete | | Builder | Read the page tree and update a node | | Quizzes | List quiz records and create quiz pages | | Funnels | List, create, update, and read. Funnels are not deleted through this API | | Videos | List and update player settings. Uploads and deletes stay in the Atomicat app | | Products | List, create, update, and delete | | Leads | Search form and quiz leads | | Analytics | Counts for the account, not a traffic report | | Webhooks | Subscribe to lead, page, product, funnel, site, and project events | List and search calls return a JSON array. A single-record call returns one object. ## Where a key comes from Create a key in the Atomicat app under **Settings → API Keys**. The full key is shown once. The API stores a hash, a short prefix, the scopes, an optional expiry, and an optional IP allowlist. ## How these docs stay current The reference pages are generated from `apis/openapi.json` when this site is built. Editing that file, or the generator at `scripts/build-openapi.mjs`, does not change the live site until the site is built and published again. The same English document is served by the API: ```text GET https://automation.atomicat-api.com/api/automation/v1/openapi.json ``` English is the default language. Spanish lives under `/es` and Portuguese under `/pt`. Paths, field names, and scope names stay in English in every language. The light and dark themes are both available from the header. ## For agents and crawlers The pages are static HTML and are listed in [sitemap.xml](https://docs.atomicat.ai/sitemap.xml). Each guide is also available as Markdown at the same path with a `.md` suffix, for example [/introduction.md](https://docs.atomicat.ai/introduction.md). [/llms.txt](https://docs.atomicat.ai/llms.txt) is the page index, and [/llms-full.txt](https://docs.atomicat.ai/llms-full.txt) is the full guide text. The OpenAPI document is at [/openapi.json](https://docs.atomicat.ai/openapi.json). --- ## Document: Changelog What changed in the Atomicat API. URL: https://docs.atomicat.ai/changelog # Changelog ## 2026-09-26 The public reference now documents every customer route, including parameters, request bodies, and responses. - `GET /analytics` returns account counts for pages, sites, funnels, products, projects, form leads, and quiz leads. - `GET` by id is available for projects, sites, pages, products, funnels, videos, and quizzes. - Draft pages with no site can be deleted. Published pages are deleted through their site. - Products can be deleted. A project can be deleted only when nothing else still uses it. - Webhook URLs must be public HTTPS, and the host is checked again before delivery. - API keys and the activity log are available to every account in **Settings**, not only administrators. - List and search responses remain JSON arrays. Sites, funnels, and videos still have no delete route. Videos still have no create route and no upload webhook. --- ## Document: Authentication Create an API key, send it, and choose scopes. URL: https://docs.atomicat.ai/authentication # Authentication Send the full key on every call except `GET /openapi.json`. ``` Authorization: Bearer at_live_... ``` The prefix alone is not a key. A missing, unknown, expired, or revoked key returns `401`. A valid key that lacks the scope, or that is called from an IP outside its allowlist, returns `403`. ## Create a key 1. Open the Atomicat app and go to **Settings → API Keys**. 2. Choose a name, the scopes the integration needs, an optional expiry, and an optional IP allowlist. 3. Confirm the email code. The full key is shown once. Store it in a secret manager. Leave the IP allowlist empty to allow every address. When you set it, use exact IPv4 addresses or IPv4 CIDR blocks for the servers that will call the API. Revoke a key from the same screen. Revocation takes effect on the next request. ## Scopes Give a key only the scopes it needs. | Scope | Allows | | --- | --- | | `account:read` | `GET /me` | | `projects:read` | List and read projects | | `projects:write` | Create, update, and delete projects | | `sites:read` | List and read sites | | `sites:write` | Create sites | | `pages:read` | List and read pages, templates, quizzes, and the content map | | `pages:write` | Create, edit, and delete pages and quizzes | | `pages:publish` | Publish a page. `pages:write` also allows publish | | `builder:read` | Read the builder. `pages:read` also allows it | | `builder:write` | Edit nodes and delay. `pages:write` also allows it | | `funnels:read` | List and read funnels | | `funnels:write` | Create and update funnels | | `videos:read` | List and read videos | | `videos:write` | Update player settings | | `products:read` | List and read products | | `products:write` | Create, update, and delete products | | `leads:read` | Search leads | | `analytics:read` | Read account counts | Webhook subscriptions accept any one of `leads:read`, `pages:read`, `products:read`, `funnels:read`, `sites:read`, or `projects:read`. ## Try a request The reference pages include a playground. Paste your own key there. This site does not store a shared key. ```bash export ATOMICAT_API_KEY="at_live_..." curl "https://automation.atomicat-api.com/api/automation/v1/projects?limit=10" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" ``` --- ## Document: Webhooks Assine eventos da conta em uma URL HTTPS pública. URL: https://docs.atomicat.ai/pt/webhooks # Webhooks Crie uma assinatura com `POST /hooks`. A Atomicat envia um POST HTTP para `target_url` quando o evento acontece. ```bash curl -X POST "https://automation.atomicat-api.com/api/automation/v1/hooks" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "target_url": "https://example.com/atomicat", "event_type": "form_lead.created" }' ``` A resposta inclui o `id` da assinatura. Ela não repete a URL de destino. `DELETE /hooks/{subscriptionId}` desativa a assinatura. As entregas param. ## Eventos | `event_type` | Quando é enviado | | --- | --- | | `form_lead.created` | Um envio de formulário é salvo | | `quiz_lead.created` | Um envio de quiz é salvo | | `page.created` | Uma página é criada | | `page.published` | Uma página é publicada | | `product.created` | Um produto é criado | | `funnel.created` | Um funil é criado | | `site.created` | Um site é criado | | `project.created` | Um projeto é criado | Não existe o evento `video.uploaded`. Depois de um upload no app, consulte `GET /videos`. `GET /hooks/sample/{eventType}` devolve um objeto de exemplo dentro de um array. Use para montar o receptor antes de assinar. ## Regras da URL `target_url` precisa ser HTTPS em um host público. São recusados: - URLs `http://` - URLs com usuário ou senha - `localhost`, `.local` e `.internal` - endereços privados, de loopback e de link local, inclusive os de metadados da nuvem - um hostname que resolve para um desses endereços O host é verificado de novo imediatamente antes de cada entrega. ## Receptor Responda com status `2xx`. Trate o corpo como JSON. O endpoint de exemplo mostra os campos de cada evento. Guarde o `id` do evento se precisar ignorar uma entrega repetida. --- ## Document: Requisições Paginação, erros e limites. URL: https://docs.atomicat.ai/pt/requests # Requisições Envie JSON no corpo. A API aceita até 1 MB. ``` Content-Type: application/json ``` ## Listas A maioria das listas usa `limit` e `page`. - `limit` vale 50 por padrão e não pode passar de 100. - `page` começa em 0. A página 1 pula os primeiros `limit` registros. - `GET /videos` usa `skip` em vez de `page`. - `GET /search/leads` vale 25 por padrão e não pode passar de 50. A resposta é um array. Um resultado vazio é `[]`. As rotas de busca também devolvem um array quando você passa um id exato. ## Erros Os erros usam um código estável em `error` e um `message`. | Status | Código | Significado | | --- | --- | --- | | 400 | `invalid_request` | Falta um campo ou um valor é inválido | | 401 | `missing_token` | Nenhum token Bearer foi enviado | | 401 | `invalid_token` | A chave é desconhecida, expirou ou foi revogada | | 403 | `insufficient_scope` | A chave não inclui o escopo | | 403 | `ip_not_allowed` | O IP está fora da lista da chave | | 404 | `not_found`, `page_not_found`, `project_not_found` | O registro não existe ou é de outra conta | | 409 | `project_in_use` | O projeto ainda tem páginas, produtos, sites ou funis | | 429 | `rate_limited` | A chave enviou mais de 5.000 solicitações em 10 minutos | ```json { "error": "invalid_request", "message": "name is required." } ``` ## Limites | Janela | Limite | Vale para | | --- | --- | --- | | 10 minutos | 5.000 solicitações | Cada chave | | 15 minutos | 60.000 solicitações | Cada IP, no host inteiro | Se atingir um limite, espere a janela acabar e tente de novo. A resposta inclui os cabeçalhos padrão de limite. ## O que não está nesta API A criação de chaves, a revogação e o registro de atividade usam o app da Atomicat com a sessão iniciada. Não estão disponíveis para uma chave de API. As rotas internas dos serviços da Atomicat também ficam de fora. --- ## Document: Introdução O que a API da Atomicat faz e como estes documentos acompanham a especificação. URL: https://docs.atomicat.ai/pt/introduction # Introdução A API da Atomicat é uma API HTTPS da conta dona da chave. Use para criar e publicar páginas, administrar sites, funis, vídeos e produtos, ler leads e receber webhooks. URL base de produção: ```text https://automation.atomicat-api.com/api/automation/v1 ``` ```bash curl "https://automation.atomicat-api.com/api/automation/v1/me" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" ``` ## O que você pode fazer | Área | O que a API cobre | | --- | --- | | Projetos | Listar, criar, atualizar e excluir um projeto que nada mais usa | | Sites | Listar, criar e ler. Esta API não exclui sites | | Páginas | Criar, duplicar, editar, publicar e excluir | | Construtor | Ler a árvore da página e atualizar um nó | | Quizzes | Listar registros e criar páginas de quiz | | Funis | Listar, criar, atualizar e ler. Esta API não exclui funis | | Vídeos | Listar e atualizar o player. Uploads e exclusões continuam no app | | Produtos | Listar, criar, atualizar e excluir | | Leads | Buscar leads de formulário e quiz | | Analítica | Contagens da conta, não um relatório de tráfego | | Webhooks | Assinar eventos de leads, páginas, produtos, funis, sites e projetos | Listas e buscas devolvem um array JSON. Um registro individual devolve um objeto. ## De onde vem a chave Crie uma chave no app da Atomicat, em **Configurações → Chaves de API**. A chave completa aparece uma única vez. A API guarda um hash, um prefixo curto, os escopos, uma validade opcional e uma lista opcional de IPs. ## Como estes documentos se mantêm As páginas de referência são geradas a partir de `apis/openapi.json` quando este site é construído. Alterar esse arquivo não muda o site publicado até uma nova construção e publicação. O mesmo documento em inglês é servido pela API: ```text GET https://automation.atomicat-api.com/api/automation/v1/openapi.json ``` O inglês é o idioma padrão. O espanhol fica em `/es` e o português em `/pt`. Rotas, nomes de campos e escopos permanecem em inglês. Os temas claro e escuro ficam no cabeçalho. ## Para agentes e rastreadores As páginas são HTML estático e estão no [sitemap.xml](https://docs.atomicat.ai/sitemap.xml). Cada guia também existe em Markdown no mesmo caminho com o sufixo `.md`, por exemplo [/pt/introduction.md](https://docs.atomicat.ai/pt/introduction.md). [/llms.txt](https://docs.atomicat.ai/llms.txt) é o índice e [/llms-full.txt](https://docs.atomicat.ai/llms-full.txt) é o texto completo dos guias. O documento OpenAPI está em [/openapi.json](https://docs.atomicat.ai/openapi.json). --- ## Document: Mudanças O que mudou na API da Atomicat. URL: https://docs.atomicat.ai/pt/changelog # Mudanças ## 2026-09-26 A referência pública documenta cada rota de cliente, com parâmetros, corpos e respostas. - `GET /analytics` devolve contagens de páginas, sites, funis, produtos, projetos, leads de formulário e leads de quiz. - `GET` por id está disponível para projetos, sites, páginas, produtos, funis, vídeos e quizzes. - Rascunhos sem site podem ser excluídos. Páginas publicadas são excluídas pelo site. - Produtos podem ser excluídos. Um projeto só pode ser excluído quando nada mais o usa. - URLs de webhook precisam ser HTTPS públicas, e o host é verificado de novo antes da entrega. - Chaves e o registro de atividade estão disponíveis para todas as contas em **Configurações**. - Listas e buscas continuam sendo arrays JSON. Sites, funis e vídeos continuam sem rota de exclusão. Vídeos continuam sem rota de criação e sem webhook de upload. --- ## Document: Autenticação Crie uma chave, envie e escolha os escopos. URL: https://docs.atomicat.ai/pt/authentication # Autenticação Envie a chave completa em cada chamada, exceto `GET /openapi.json`. ``` Authorization: Bearer at_live_... ``` Só o prefixo não é uma chave. Uma chave ausente, desconhecida, expirada ou revogada responde `401`. Uma chave válida sem o escopo, ou chamada de um IP fora da lista, responde `403`. ## Criar uma chave 1. Abra o app da Atomicat e vá em **Configurações → Chaves de API**. 2. Escolha um nome, os escopos que a integração precisa, uma validade opcional e uma lista opcional de IPs. 3. Confirme o código do e-mail. A chave completa aparece uma única vez. Guarde em um cofre de segredos. Deixe a lista de IPs vazia para permitir qualquer endereço. Se definir, use endereços IPv4 exatos ou blocos CIDR IPv4 dos servidores que vão chamar a API. Revogue uma chave na mesma tela. A revogação vale na próxima solicitação. ## Escopos | Escopo | Permite | | --- | --- | | `account:read` | `GET /me` | | `projects:read` | Listar e ler projetos | | `projects:write` | Criar, atualizar e excluir projetos | | `sites:read` | Listar e ler sites | | `sites:write` | Criar sites | | `pages:read` | Listar e ler páginas, modelos, quizzes e o mapa de conteúdo | | `pages:write` | Criar, editar e excluir páginas e quizzes | | `pages:publish` | Publicar uma página. `pages:write` também permite | | `builder:read` | Ler o construtor. `pages:read` também permite | | `builder:write` | Editar nós e o atraso. `pages:write` também permite | | `funnels:read` | Listar e ler funis | | `funnels:write` | Criar e atualizar funis | | `videos:read` | Listar e ler vídeos | | `videos:write` | Atualizar o player | | `products:read` | Listar e ler produtos | | `products:write` | Criar, atualizar e excluir produtos | | `leads:read` | Buscar leads | | `analytics:read` | Ler as contagens da conta | Assinaturas de webhook aceitam qualquer um de `leads:read`, `pages:read`, `products:read`, `funnels:read`, `sites:read` ou `projects:read`. ## Testar uma requisição As páginas de referência incluem um playground. Cole a sua chave ali. Este site não guarda uma chave compartilhada. ```bash export ATOMICAT_API_KEY="at_live_..." curl "https://automation.atomicat-api.com/api/automation/v1/projects?limit=10" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" ``` --- ## Document: Webhooks Suscríbete a eventos de la cuenta en una URL HTTPS pública. URL: https://docs.atomicat.ai/es/webhooks # Webhooks Crea una suscripción con `POST /hooks`. Atomicat envía un POST HTTP a `target_url` cuando ocurre el evento. ```bash curl -X POST "https://automation.atomicat-api.com/api/automation/v1/hooks" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "target_url": "https://example.com/atomicat", "event_type": "form_lead.created" }' ``` La respuesta incluye el `id` de la suscripción. No repite la URL de destino. `DELETE /hooks/{subscriptionId}` desactiva la suscripción. Las entregas se detienen. ## Eventos | `event_type` | Cuándo se envía | | --- | --- | | `form_lead.created` | Se guarda un envío de formulario | | `quiz_lead.created` | Se guarda un envío de quiz | | `page.created` | Se crea una página | | `page.published` | Se publica una página | | `product.created` | Se crea un producto | | `funnel.created` | Se crea un embudo | | `site.created` | Se crea un sitio | | `project.created` | Se crea un proyecto | No hay un evento `video.uploaded`. Después de una carga en la app, consulta `GET /videos`. `GET /hooks/sample/{eventType}` devuelve un objeto de ejemplo dentro de un arreglo. Úsalo para construir el receptor antes de suscribirte. ## Reglas de la URL `target_url` debe ser HTTPS en un host público. Se rechazan: - URLs `http://` - URLs con usuario o contraseña - `localhost`, `.local` y `.internal` - direcciones privadas, de loopback y de enlace local, incluidas las de metadatos de la nube - un hostname que resuelve a una de esas direcciones El host se vuelve a comprobar justo antes de cada entrega. ## Receptor Responde con un estado `2xx`. Trata el cuerpo como JSON. El endpoint de ejemplo muestra los campos de cada evento. Guarda el `id` del evento si necesitas ignorar una entrega repetida. --- ## Document: Solicitudes Paginación, errores y límites. URL: https://docs.atomicat.ai/es/requests # Solicitudes Envía JSON en el cuerpo. La API acepta hasta 1 MB. ``` Content-Type: application/json ``` ## Listas La mayoría de las listas usan `limit` y `page`. - `limit` vale 50 de forma predeterminada y no puede pasar de 100. - `page` empieza en 0. La página 1 omite los primeros `limit` registros. - `GET /videos` usa `skip` en lugar de `page`. - `GET /search/leads` vale 25 de forma predeterminada y no puede pasar de 50. La respuesta es un arreglo. Un resultado vacío es `[]`. Las rutas de búsqueda también devuelven un arreglo cuando pasas un id exacto. ## Errores Los errores usan un código estable en `error` y un `message`. | Estado | Código | Significado | | --- | --- | --- | | 400 | `invalid_request` | Falta un campo o un valor es inválido | | 401 | `missing_token` | No se envió un token Bearer | | 401 | `invalid_token` | La clave es desconocida, caducó o fue revocada | | 403 | `insufficient_scope` | La clave no incluye el alcance | | 403 | `ip_not_allowed` | La IP no está en la lista de la clave | | 404 | `not_found`, `page_not_found`, `project_not_found` | El registro no existe o es de otra cuenta | | 409 | `project_in_use` | El proyecto todavía tiene páginas, productos, sitios o embudos | | 429 | `rate_limited` | La clave envió más de 5.000 solicitudes en 10 minutos | ```json { "error": "invalid_request", "message": "name is required." } ``` ## Límites | Ventana | Límite | Aplica a | | --- | --- | --- | | 10 minutos | 5.000 solicitudes | Cada clave | | 15 minutos | 60.000 solicitudes | Cada IP, en todo el host | Si alcanzas un límite, espera a que termine la ventana y vuelve a intentar. La respuesta incluye los encabezados estándar de límite. ## Qué no está en esta API La creación de claves, la revocación y el registro de actividad usan la app de Atomicat con la sesión iniciada. No están disponibles para una clave de API. Las rutas internas de los servicios de Atomicat tampoco aparecen aquí. --- ## Document: Introducción Qué hace la API de Atomicat y cómo se actualizan estos documentos. URL: https://docs.atomicat.ai/es/introduction # Introducción La API de Atomicat es una API HTTPS de la cuenta dueña de la clave. Sirve para crear y publicar páginas, administrar sitios, embudos, videos y productos, leer leads y recibir webhooks. URL base de producción: ```text https://automation.atomicat-api.com/api/automation/v1 ``` ```bash curl "https://automation.atomicat-api.com/api/automation/v1/me" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" ``` ## Qué puedes hacer | Área | Qué cubre la API | | --- | --- | | Proyectos | Listar, crear, actualizar y eliminar un proyecto que ya no usa nada | | Sitios | Listar, crear y leer. Esta API no elimina sitios | | Páginas | Crear, duplicar, editar, publicar y eliminar | | Constructor | Leer el árbol de la página y actualizar un nodo | | Quizzes | Listar registros y crear páginas de quiz | | Embudos | Listar, crear, actualizar y leer. Esta API no elimina embudos | | Videos | Listar y actualizar el reproductor. Las cargas y las eliminaciones siguen en la app | | Productos | Listar, crear, actualizar y eliminar | | Leads | Buscar leads de formularios y quizzes | | Analítica | Conteos de la cuenta, no un informe de tráfico | | Webhooks | Suscribirse a eventos de leads, páginas, productos, embudos, sitios y proyectos | Las listas y las búsquedas devuelven un arreglo JSON. Un registro individual devuelve un objeto. ## De dónde sale la clave Crea una clave en la app de Atomicat, en **Ajustes → Claves de API**. La clave completa se muestra una sola vez. La API guarda un hash, un prefijo corto, los alcances, una caducidad opcional y una lista opcional de IPs. ## Cómo se mantienen estos documentos Las páginas de referencia se generan desde `apis/openapi.json` cuando se construye este sitio. Cambiar ese archivo no cambia el sitio publicado hasta que se vuelve a construir y publicar. El mismo documento en inglés lo sirve la API: ```text GET https://automation.atomicat-api.com/api/automation/v1/openapi.json ``` El inglés es el idioma predeterminado. El español está en `/es` y el portugués en `/pt`. Las rutas, los nombres de campos y los alcances siguen en inglés. El tema claro y el tema oscuro están en el encabezado. ## Para agentes y rastreadores Las páginas son HTML estático y están en [sitemap.xml](https://docs.atomicat.ai/sitemap.xml). Cada guía también está en Markdown en la misma ruta con el sufijo `.md`, por ejemplo [/es/introduction.md](https://docs.atomicat.ai/es/introduction.md). [/llms.txt](https://docs.atomicat.ai/llms.txt) es el índice y [/llms-full.txt](https://docs.atomicat.ai/llms-full.txt) es el texto completo de las guías. El documento OpenAPI está en [/openapi.json](https://docs.atomicat.ai/openapi.json). --- ## Document: Cambios Qué cambió en la API de Atomicat. URL: https://docs.atomicat.ai/es/changelog # Cambios ## 2026-09-26 La referencia pública documenta cada ruta de cliente, con parámetros, cuerpos y respuestas. - `GET /analytics` devuelve conteos de páginas, sitios, embudos, productos, proyectos, leads de formulario y leads de quiz. - `GET` por id está disponible para proyectos, sitios, páginas, productos, embudos, videos y quizzes. - Los borradores sin sitio se pueden eliminar. Las páginas publicadas se eliminan a través de su sitio. - Los productos se pueden eliminar. Un proyecto se puede eliminar solo cuando ya no lo usa nada. - Las URLs de webhook deben ser HTTPS públicas, y el host se comprueba de nuevo antes de la entrega. - Las claves y el registro de actividad están disponibles para todas las cuentas en **Ajustes**. - Las listas y las búsquedas siguen siendo arreglos JSON. Los sitios, los embudos y los videos siguen sin ruta de eliminación. Los videos siguen sin ruta de creación y sin webhook de carga. --- ## Document: Autenticación Crea una clave, envíala y elige los alcances. URL: https://docs.atomicat.ai/es/authentication # Autenticación Envía la clave completa en cada llamada, excepto `GET /openapi.json`. ``` Authorization: Bearer at_live_... ``` El prefijo solo no es una clave. Una clave ausente, desconocida, caducada o revocada responde `401`. Una clave válida sin el alcance, o llamada desde una IP fuera de su lista, responde `403`. ## Crear una clave 1. Abre la app de Atomicat y entra en **Ajustes → Claves de API**. 2. Elige un nombre, los alcances que necesita la integración, una caducidad opcional y una lista opcional de IPs. 3. Confirma el código del correo. La clave completa se muestra una sola vez. Guárdala en un gestor de secretos. Deja la lista de IPs vacía para permitir cualquier dirección. Si la defines, usa direcciones IPv4 exactas o bloques CIDR IPv4 de los servidores que llamarán a la API. Revoca una clave en la misma pantalla. La revocación aplica en la siguiente solicitud. ## Alcances | Alcance | Permite | | --- | --- | | `account:read` | `GET /me` | | `projects:read` | Listar y leer proyectos | | `projects:write` | Crear, actualizar y eliminar proyectos | | `sites:read` | Listar y leer sitios | | `sites:write` | Crear sitios | | `pages:read` | Listar y leer páginas, plantillas, quizzes y el mapa de contenido | | `pages:write` | Crear, editar y eliminar páginas y quizzes | | `pages:publish` | Publicar una página. `pages:write` también lo permite | | `builder:read` | Leer el constructor. `pages:read` también lo permite | | `builder:write` | Editar nodos y el retraso. `pages:write` también lo permite | | `funnels:read` | Listar y leer embudos | | `funnels:write` | Crear y actualizar embudos | | `videos:read` | Listar y leer videos | | `videos:write` | Actualizar el reproductor | | `products:read` | Listar y leer productos | | `products:write` | Crear, actualizar y eliminar productos | | `leads:read` | Buscar leads | | `analytics:read` | Leer los conteos de la cuenta | Las suscripciones de webhook aceptan cualquiera de `leads:read`, `pages:read`, `products:read`, `funnels:read`, `sites:read` o `projects:read`. ## Probar una solicitud Las páginas de referencia incluyen un playground. Pega allí tu propia clave. Este sitio no guarda una clave compartida. ```bash export ATOMICAT_API_KEY="at_live_..." curl "https://automation.atomicat-api.com/api/automation/v1/projects?limit=10" \ -H "Authorization: Bearer $ATOMICAT_API_KEY" ```