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

# Crear carta para campaña automática

> Crea una carta dentro de una campaña automática activa.
        
        **Comportamiento**:
        - Valida y normaliza la dirección postal.
        - Cobra automáticamente los créditos (3 España, 5 internacional).
        - Inserta la carta en la campaña indicada y la deja lista para producción.




## OpenAPI

````yaml api-reference/openapi.json post /card
openapi: 3.0.3
info:
  title: Manuscritten Public API
  version: 1.0.0
  description: |
    API pública de **Manuscritten** para crear cartas manuscritas y consultar
    recursos auxiliares (campañas automáticas, diseños, remitentes y firmas).
        

        **Notas clave**:
        - Autenticación mediante **API Key** en la cabecera `X-API-KEY`.
        - Los endpoints de creación **validan y normalizan** la dirección postal, y **cobran créditos** automáticamente.
        - Coste orientativo: **3 créditos** (España) y **5 créditos** (internacional).
servers:
  - url: https://app.manuscritten.com/api/public
    description: Producción
security:
  - ApiKeyAuth: []
tags:
  - name: Info
    description: Endpoints de consulta de recursos de la cuenta
  - name: Create
    description: Endpoints para crear cartas (campañas automáticas o individuales)
paths:
  /card:
    post:
      tags:
        - Create
      summary: Crear carta para campaña automática
      description: |
        Crea una carta dentro de una campaña automática activa.
                
                **Comportamiento**:
                - Valida y normaliza la dirección postal.
                - Cobra automáticamente los créditos (3 España, 5 internacional).
                - Inserta la carta en la campaña indicada y la deja lista para producción.
      operationId: createCampaignCard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCardRequest'
            examples:
              ejemplo:
                value:
                  campaignId: 7f127892-71ab-45a6-9145-3565848b55ab
                  name: Alfredo
                  surname: Villacastín
                  address: C. de José María Lacarra de Miguel, 250
                  zip: '50008'
                  city: Zaragoza
                  province: ''
                  country: ES
                  variables:
                    Canal Previo: el Tech Show
      responses:
        '200':
          description: Creada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
              examples:
                ejemplo:
                  value:
                    success: true
                    cardId: c92a7c5e-13bd-4b3c-b2de-dc80475c0f3a
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimit'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    CreateCardRequest:
      type: object
      properties:
        campaignId:
          type: string
          format: uuid
        name:
          type: string
        surname:
          type: string
        address:
          type: string
        zip:
          type: string
        city:
          type: string
        province:
          type: string
          nullable: true
        country:
          type: string
          description: Código ISO 3166-1 alfa-2 (ej. ES, FR, US)
          minLength: 2
          maxLength: 2
        variables:
          type: object
          additionalProperties:
            type: string
      required:
        - campaignId
        - name
        - surname
        - address
        - zip
        - city
        - country
    CreateResponse:
      type: object
      properties:
        success:
          type: boolean
        cardId:
          type: string
          format: uuid
      required:
        - success
        - cardId
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
  responses:
    BadRequest:
      description: Petición inválida (validación, campos obligatorios, formatos).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            ejemplo:
              value:
                error: Bad Request
                message: Campo "address" es obligatorio
    Unauthorized:
      description: Falta o es inválida la API Key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            ejemplo:
              value:
                error: Unauthorized
                message: API key inválida o ausente
    PaymentRequired:
      description: Créditos insuficientes para crear la carta.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            ejemplo:
              value:
                error: Payment Required
                message: Créditos insuficientes
    RateLimit:
      description: Límite de peticiones excedido.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            ejemplo:
              value:
                error: Too Many Requests
                message: Has superado el límite de peticiones
    ServerError:
      description: Error interno del servidor.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            ejemplo:
              value:
                error: Internal Server Error
                message: Ha ocurrido un error inesperado
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: API Key de Manuscritten.

````