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

# Crear app push

> Crea una app para registrar dispositivos y enviar notificaciones push (Web, Android o iOS).



## OpenAPI

````yaml /es/push-api/api-reference/openapi-push.json post /v1/push/apps
openapi: 3.0.3
info:
  title: Notifique API Push
  description: >-
    Envíe notificaciones push y gestione apps y dispositivos. Autentíquese con
    `Authorization: Bearer sk_live_...` o `x-api-key`.
  version: 1.0.0
servers:
  - url: https://api.notifique.dev
    description: Producción
security:
  - ntfPushBearerAuth: []
  - ntfPushApiKeyHeader: []
tags:
  - name: Push Apps
    description: >-
      CRUD de aplicações de push (um app por produto; credenciais
      Web/Android/iOS por app)
  - name: Push Devices
    description: Registro e listagem de dispositivos/subscriptions
  - name: Push Messages
    description: Envio, consulta e cancelamento de notificações push
paths:
  /v1/push/apps:
    post:
      tags:
        - Push Apps
      summary: Crear app push
      description: >-
        Crea una app para registrar dispositivos y enviar notificaciones push
        (Web, Android o iOS).
      operationId: ntfPush_postV1PushApps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NtfPush_PushAppCreateRequest'
            examples:
              webApp:
                summary: App Web Push
                description: >-
                  Notificaciones en el navegador — VAPID generado
                  automáticamente.
                value:
                  name: Mi sitio
              mobileApp:
                summary: App móvil
                description: Android/iOS — configure FCM/APNs después vía PUT.
                value:
                  name: App iOS y Android
      responses:
        '200':
          description: Push app criado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NtfPush_PushAppSingleResponse'
        '400':
          description: name vazio ou inválido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NtfPush_ErrorResponse'
        '401':
          description: API Key ausente ou inválida.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NtfPush_ErrorResponse'
        '402':
          description: Plano expirado/suspenso (WORKSPACE_BLOCKED).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NtfPush_ErrorResponse'
        '403':
          description: PLAN_LIMIT_PUSH_APPS ou escopo insuficiente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NtfPush_ErrorResponse'
components:
  schemas:
    NtfPush_PushAppCreateRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 1024
    NtfPush_PushAppSingleResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          example: true
        data:
          $ref: '#/components/schemas/NtfPush_PushAppItem'
    NtfPush_ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          description: 'Rótulo HTTP do erro (ex.: Unauthorized, Bad Request, Not Found).'
        message:
          type: string
          description: >-
            Mensagem legível para exibir ao usuário (localizada via
            Accept-Language / x-locale quando aplicável).
        code:
          type: string
          description: >-
            Código estável da API v1 (enum). Sempre presente em erros. Use com o
            status HTTP para decidir retry ou correção. Ver [Respostas de
            erro](/guides/conceitos/resposta-de-erros).
        details:
          type: object
      required:
        - success
        - error
        - message
        - code
    NtfPush_PushAppItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        workspaceId:
          type: string
        vapidPublicKey:
          type: string
          nullable: true
        hasVapidPrivate:
          type: boolean
        hasFcm:
          type: boolean
        hasApns:
          type: boolean
        androidPackageName:
          type: string
          nullable: true
        allowedOrigins:
          type: array
          items:
            type: string
        promptConfig:
          type: object
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
  securitySchemes:
    ntfPushBearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 'Authorization: Bearer sk_live_xxxxx'
    ntfPushApiKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: 'x-api-key: sk_live_xxxxx'

````