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

# Criar produto

> Cria um novo produto na sua conta

Requer o escopo `products:write` e o header HTTP `Idempotency-Key` (veja [Idempotência](/apps/seller/guias/idempotencia)). Ao criar o produto, um checkout inicial é gerado automaticamente.

O campo `image` aceita uma URL ou um data URI base64 (`data:image/...;base64,...`). O base64 é decodificado e enviado ao storage.

<ResponseExample>
  ```json Resposta theme={null}
  {
    "data": {
      "id": 3256,
      "name": "Curso de Vendas",
      "description": "Curso completo de vendas",
      "status": "published",
      "type": "digital",
      "payment_type": "unique",
      "recurrence_interval": null,
      "price": 199.9,
      "currency": "brl",
      "is_free": false,
      "created_at": "2026-06-01T10:00:00-03:00",
      "updated_at": "2026-06-01T10:00:00-03:00"
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml POST /products
openapi: 3.1.0
info:
  title: SpeedSellX API
  version: 1.0.0
  description: >-
    API pública da SpeedSellX para consultar e atualizar, por integração, os
    dados da sua conta: produtos, pedidos, vendas, assinaturas, métricas,
    checkouts, upsells e webhooks. Autentique com `Authorization: Bearer
    sk_live_...` e gere chaves no painel, em Desenvolvedores. Requisições que
    alteram dados exigem o header HTTP `Idempotency-Key`. Listagens aceitam
    `page`/`per_page` e retornam `{ data, meta }`.
servers:
  - url: https://api.speedsellx.io/seller/v1
    description: Produção
security: []
tags:
  - name: Produtos
  - name: Pedidos
  - name: Vendas
  - name: Assinaturas
  - name: Métricas
  - name: Upsells
  - name: Checkouts
paths:
  /products:
    post:
      tags:
        - Produtos
      summary: Criar produto
      description: >-
        Cria um produto usando o mesmo fluxo do painel: aprovação pendente,

        checkout padrão e sincronização com a Stripe, quando a conta tem
        adquirente configurado. O

        header HTTP Idempotency-Key é obrigatório.
      operationId: v1.products.store
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreProductRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProductResource'
                required:
                  - data
        '422':
          $ref: '#/components/responses/ValidationException'
components:
  schemas:
    StoreProductRequest:
      type: object
      description: >-
        Validates public input for product creation and shapes it into the
        payload

        ProductRepository::store expects. Validation lives here (the public

        contract); the repository runs the same creation flow as the dashboard.
      properties:
        name:
          type: string
          maxLength: 255
        description:
          type: string
          maxLength: 255
        image:
          type: string
          description: >-
            URL ou caminho da imagem (até 2048 caracteres), ou um data URI
            base64 (data:image/...;base64,...) que é decodificado e enviado ao
            storage.
        category_id:
          type: integer
          minimum: 1
        language_id:
          type: integer
          minimum: 1
        payment_type:
          type: string
          enum:
            - unique
            - recurring
        recurrence_interval:
          type:
            - string
            - 'null'
          enum:
            - daily
            - weekly
            - fortnightly
            - monthly
            - twomonthly
            - quarterly
            - semiannual
            - yearly
        price:
          type: number
          minimum: 0
        currency:
          type: string
          enum:
            - brl
            - usd
            - eur
        type:
          type: string
          enum:
            - physical
            - digital
        delivery:
          type: string
          enum:
            - nothing
            - memberkit
            - cademi
            - rocketmember
            - astronmembers
            - download
            - external
        warranty_time:
          type: integer
          enum:
            - '7'
            - '14'
            - '21'
            - '30'
        publish_status:
          type: string
          enum:
            - draft
            - published
        is_free:
          type: boolean
        convert_currency:
          type: boolean
        attachment_url:
          type:
            - string
            - 'null'
          maxLength: 2048
        shipping_cost:
          type: number
          minimum: 0
        is_encapsulated:
          type: boolean
        landing_page:
          type:
            - string
            - 'null'
          maxLength: 2048
        support_email:
          type:
            - string
            - 'null'
          format: email
        author:
          type:
            - string
            - 'null'
          maxLength: 255
        credit_card_enabled:
          type: boolean
        pix_enabled:
          type: boolean
        billet_enabled:
          type: boolean
        has_speed_recovery:
          type: boolean
      required:
        - name
        - description
        - image
        - category_id
        - language_id
        - payment_type
        - price
        - currency
        - type
        - delivery
        - warranty_time
        - publish_status
      title: StoreProductRequest
    ProductResource:
      type: object
      properties:
        id:
          type: integer
        name:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        status:
          type: string
        type:
          type:
            - string
            - 'null'
        payment_type:
          type:
            - string
            - 'null'
        recurrence_interval:
          type:
            - string
            - 'null'
        price:
          type:
            - number
            - 'null'
        currency:
          type:
            - string
            - 'null'
        is_free:
          type: boolean
        image:
          type:
            - string
            - 'null'
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
        - name
        - description
        - status
        - type
        - payment_type
        - recurrence_interval
        - price
        - currency
        - is_free
        - image
        - created_at
        - updated_at
      title: ProductResource
  responses:
    ValidationException:
      description: Validation error
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                description: Errors overview.
              errors:
                type: object
                description: A detailed description of each field that failed validation.
                additionalProperties:
                  type: array
                  items:
                    type: string
            required:
              - message
              - errors

````