> ## Documentation Index
> Fetch the complete documentation index at: https://docs.engineapi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar conta (self-service): comece grátis no plano Dev

> 
**Porta de entrada da EngineAPI.** Cria sua conta completa em uma chamada,
sem falar com ninguém:

1. **Partner** (sua software house) com o `companyName` informado;
2. **Usuário ADMIN** (`name` + `email` + `password`) para o dashboard;
3. **Plano Dev (R$ 0) ATIVO**: pronto para emitir em homologação na hora;
4. **API Key de teste** (`ek_test_...`): use no header `x-api-key`.

A `ek_test_` é exibida **apenas nesta resposta** (armazenamos somente o
hash). Guarde-a em local seguro; se perder, gere outra em
`POST /auth/api-keys/test/regenerate`.

A resposta também traz um `access_token` (JWT): você já cai logado no
dashboard, sem precisar de um segundo request de login.

**Este cadastro NUNCA emite `ek_live_`.** A key de produção é liberada
somente com assinatura de plano pago ativa, via
`POST /auth/api-keys/regenerate`.

Rate limit: **5 cadastros por minuto por IP** (429 acima disso).
    



## OpenAPI

````yaml /openapi.json post /v1/auth/register
openapi: 3.1.0
info:
  title: EngineAPI - Motor Fiscal SaaS
  description: >-

    ## API de Emissão Fiscal B2B2B


    EngineAPI é uma plataforma SaaS para emissão de documentos fiscais
    eletrônicos brasileiros.


    ### Documentos Suportados

    - **NF-e** (Modelo 55) - Nota Fiscal Eletrônica

    - **NFC-e** (Modelo 65) - Nota Fiscal de Consumidor Eletrônica

    - **NFS-e** - Nota Fiscal de Serviços Eletrônica


    > CTe (57) e MDFe (58): roadmap sem data, fora da superfície pública.


    ### Autenticação

    Todas as rotas protegidas requerem:

    ```

    Authorization: Bearer <seu_token>    # JWT (painel web)

    x-api-key: ek_live_<sua_key>         # API Key (server-to-server)

    ```


    ### Rate Limits

    - **Por plano** (janela de 1 segundo): Dev 5 · Starter 20 · Growth 60 ·
    Scale 200 req/s

    - Headers `X-RateLimit-Limit`/`Remaining`/`Reset` em toda resposta;
    `Retry-After` no 429


    ### Idempotency

    POSTs aceitam header `Idempotency-Key` para prevenir duplicatas:

    ```

    Idempotency-Key: <uuid-único-por-operação>

    ```


    ### Ambientes

    - **Homologação**: Para testes (SEFAZ sandbox)

    - **Produção**: Emissões reais


    ### Suporte

    - Email: suporte@engineapi.com.br

    - Docs: https://docs.engineapi.com.br
        
  version: 2.1.0
  contact:
    name: engineAPI
    url: https://engineapi.com.br
    email: suporte@engineapi.com.br
  license:
    name: Proprietário
    url: https://engineapi.com.br/legal/termos
servers:
  - url: https://api.engineapi.com.br
    description: Produção
security: []
tags:
  - name: Cérebro Fiscal
    description: >-
      Classificação fiscal assistida + tributação IBS/CBS (tier 80%, apoio à
      decisão)
  - name: Autenticação
    description: Login, registro de conta e API Keys
  - name: Empresas
    description: Gestão de empresas emitentes (Issuers)
  - name: NFe
    description: Nota Fiscal Eletrônica (Modelo 55)
  - name: NFCe
    description: Nota Fiscal de Consumidor (Modelo 65)
  - name: NFSe
    description: Nota Fiscal de Serviços Eletrônica
  - name: Consultas
    description: Consulta de CNPJ e CPF
  - name: Webhooks
    description: Configuração, entregas e reenvio de eventos assíncronos
  - name: Status
    description: Status público por serviço e canário de deploy
  - name: Saúde
    description: Liveness/readiness do processo e sanidade de autenticação
paths:
  /v1/auth/register:
    post:
      tags:
        - Autenticação
      summary: 'Criar conta (self-service): comece grátis no plano Dev'
      description: >-

        **Porta de entrada da EngineAPI.** Cria sua conta completa em uma
        chamada,

        sem falar com ninguém:


        1. **Partner** (sua software house) com o `companyName` informado;

        2. **Usuário ADMIN** (`name` + `email` + `password`) para o dashboard;

        3. **Plano Dev (R$ 0) ATIVO**: pronto para emitir em homologação na
        hora;

        4. **API Key de teste** (`ek_test_...`): use no header `x-api-key`.


        A `ek_test_` é exibida **apenas nesta resposta** (armazenamos somente o

        hash). Guarde-a em local seguro; se perder, gere outra em

        `POST /auth/api-keys/test/regenerate`.


        A resposta também traz um `access_token` (JWT): você já cai logado no

        dashboard, sem precisar de um segundo request de login.


        **Este cadastro NUNCA emite `ek_live_`.** A key de produção é liberada

        somente com assinatura de plano pago ativa, via

        `POST /auth/api-keys/regenerate`.


        Rate limit: **5 cadastros por minuto por IP** (429 acima disso).
            
      operationId: register
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterDto'
      responses:
        '201':
          description: >-
            Conta criada: Partner + usuário ADMIN + plano Dev ativo + ek_test_
            (mostrada só aqui) + JWT
          content:
            application/json:
              schema:
                example:
                  message: Conta criada com sucesso (plano Dev ativo)
                  partnerId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                  plan: dev
                  apiKeyTest: ek_test_9f8e7d6c-5b4a-3210-fedc-ba9876543210
                  apiKeyTestPrefix: ek_test_9f8e
                  warning: >-
                    A ek_test_ é mostrada apenas uma vez. Armazene em local
                    seguro.
                  access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                  user:
                    id: u1b2c3d4-e5f6-7890-abcd-ef1234567890
                    email: dev@suaempresa.com.br
                    name: Maria Silva
                    partnerId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                    role: ADMIN
        '400':
          description: >-
            Payload inválido (email malformado, senha < 8 chars, nomes < 2
            chars)
        '409':
          description: E-mail já cadastrado
        '429':
          description: Rate limit excedido (5 cadastros/min por IP)
        '500':
          description: 'Plano Dev ausente no banco (seed de planos não rodou): fail-loud'
components:
  schemas:
    RegisterDto:
      type: object
      properties:
        companyName:
          type: string
          minLength: 2
          maxLength: 120
        name:
          type: string
          minLength: 2
          maxLength: 120
        email:
          type: string
          maxLength: 254
          format: email
          pattern: >-
            ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
        password:
          type: string
          minLength: 8
          maxLength: 72
      required:
        - companyName
        - name
        - email
        - password

````