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

# Enviar um conteúdo no projeto

> Salvar/enviar diferentes tipos de conteúdo (texto, áudio ou arquivo) em um ou múltiplos projetos.

### Tipo 1 - Descrição

- **text** (string, obrigatório): Conteúdo de texto. Menções não são suportadas via API
    

### Tipo 2 - Áudio

- **audio** (file, obrigatório): Arquivo de áudio (multipart/form-data)
    

### Tipo 3 - Arquivo

- **file** (array, obrigatório): Array de arquivos (multipart/form-data)
    
- **text** (string, opcional): Texto descritivo
    

## Observações

- Projetos merged não podem receber novas mídias
    
- Múltiplos arquivos geram múltiplas entradas de mídia
    
- Menções em descrições processam notificações automaticamente
    
- Quando múltiplas mídias são criadas, o retorno usa `medias` (array) ao invés de `media` (objeto).



## OpenAPI

````yaml /api-reference/openapi.json post /api/management/save-media
openapi: 3.0.0
info:
  title: Olie API
  version: 1.0.0
  description: >
    # Introdução 👋


    Olá! Esta é a documentação oficial da API da [olie.ai](https://olie.ai/).
    Aqui você encontra as referências e exemplos de uso dos nossos endpoints.


    Para uma visão completa, recomendamos fortemente que você leia a
    [documentação oficial](https://docs.olie.ai/api-reference/introduction). Lá
    estão detalhados tópicos essenciais como
    [autenticação](https://docs.olie.ai/api-reference/introduction/authentication),
    [estrutura de
    respostas](https://docs.olie.ai/api-reference/general/response-structure),
    [paginação](https://docs.olie.ai/api-reference/general/pagination) e outros
    guias de integração.


    No Postman, esta coleção foca nas informações específicas de cada requisição
    (endpoints, parâmetros e exemplos), servindo como apoio rápido para testes e
    desenvolvimento.
servers:
  - url: https://api.olie.ai
security:
  - BearerAuth: []
paths:
  /api/management/save-media:
    post:
      tags:
        - projects
      summary: Enviar um conteúdo no projeto
      description: >-
        Salvar/enviar diferentes tipos de conteúdo (texto, áudio ou arquivo) em
        um ou múltiplos projetos.


        ### Tipo 1 - Descrição


        - **text** (string, obrigatório): Conteúdo de texto. Menções não são
        suportadas via API
            

        ### Tipo 2 - Áudio


        - **audio** (file, obrigatório): Arquivo de áudio (multipart/form-data)
            

        ### Tipo 3 - Arquivo


        - **file** (array, obrigatório): Array de arquivos (multipart/form-data)
            
        - **text** (string, opcional): Texto descritivo
            

        ## Observações


        - Projetos merged não podem receber novas mídias
            
        - Múltiplos arquivos geram múltiplas entradas de mídia
            
        - Menções em descrições processam notificações automaticamente
            
        - Quando múltiplas mídias são criadas, o retorno usa `medias` (array) ao
        invés de `media` (objeto).
      requestBody:
        content:
          application/json:
            schema:
              title: MediaPayload
              type: object
              properties:
                type:
                  type: integer
                  enum:
                    - 1
                    - 2
                    - 3
                  description: >-
                    O tipo do conteúdo. Valores possíveis: 1 (Texto), 2
                    (Arquivo), 3 (Áudio).
                  x-markdownDescription: Tipo a usar
                project_ids:
                  type: array
                  description: IDs dos projetos (UUIDs) onde você deseja enviar o conteúdo.
                  items:
                    type: string
                    format: uuid
                text:
                  type: string
                  maxLength: 50000
                  description: Texto do conteúdo. Obrigatório se 'type' for 1 (Texto).
                file[0]:
                  type: string
                  description: >-
                    Arquivos. Obrigatório se 'type' for 2 (Arquivo). O nome do
                    campo deve seguir o padrão 'file[0]', 'file[1]' ou
                    'file[2]', dependendo da quantidade de arquivos enviados.
                  format: binary
                audio:
                  type: string
                  description: Arquivo de áudio. Obrigatório se 'type' for 3 (Áudio).
                  format: binary
              required:
                - type
            example:
              type: 1
              project_ids:
                - 00000000-0000-0000-0000-000000000000
              text: Texto a ser enviado
              file[0]: <binary>
              audio: <binary>
      responses:
        '200':
          description: Conteúdo enviado a vários projetos
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
              example: '*'
            Access-Control-Expose-Headers:
              schema:
                type: string
              example: '*'
            Cache-Control:
              schema:
                type: string
              example: no-cache, private
            Date:
              schema:
                type: string
              example: Thu, 15 Jan 2026 19:01:51 GMT
            X-Ratelimit-Limit:
              schema:
                type: integer
              example: 160
            X-Ratelimit-Remaining:
              schema:
                type: integer
              example: 154
            Transfer-Encoding:
              schema:
                type: string
              example: chunked
          content:
            application/json:
              schema:
                type: object
                properties:
                  response:
                    type: boolean
                  medias:
                    type: array
                    items:
                      type: object
                      properties:
                        user_id:
                          type: string
                        type:
                          type: integer
                        frame_id:
                          type: string
                        project_id:
                          type: string
                        name:
                          type: string
                        technical_name:
                          type: string
                        text:
                          type: string
                        id:
                          type: string
                        updated_at:
                          type: string
                          format: date-time
                        created_at:
                          type: string
                          format: date-time
                        user:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            description:
                              type: string
                            email:
                              type: string
                              format: email
                            avatar_url:
                              type: string
                              format: uri
                            status:
                              type: integer
                            lang:
                              type: string
                            email_verified_at:
                              type: string
              example:
                response: true
                medias:
                  - user_id: 019b329a-3f1f-7198-89e5-008dc4e2bd60
                    type: 1
                    frame_id: 019b329a-4346-7064-bba3-e7c19057cda4
                    project_id: 019bbcd3-2249-7357-ac43-8ab6209ec54c
                    name: description.4fea17cab04852a3b32d401766a84d5e
                    technical_name: description.4fea17cab04852a3b32d401766a84d5e
                    text: Cada porta pode ser uma porta para outro mundo.
                    id: 019bc309-175d-7211-9524-29646278c39f
                    updated_at: '2026-01-15T19:01:51.000000Z'
                    created_at: '2026-01-15T19:01:51.000000Z'
                    user:
                      id: 019b329a-3f1f-7198-89e5-008dc4e2bd60
                      old_id: null
                      name: Test User
                      description: Nostrum debitis pariatur dolorum sapiente.
                      email: tester@olie.ai
                      avatar_url: https://via.placeholder.com/124x124.png/00eebb?text=vero
                      status: 1
                      lang: en
                      email_verified_at: '2025-12-18 14:55:28'
                  - user_id: 019b329a-3f1f-7198-89e5-008dc4e2bd60
                    type: 1
                    frame_id: 019b329a-4346-7064-bba3-e7c19057cda4
                    project_id: 019bc2c3-5404-707f-be4d-9690f6bb8179
                    name: description.4fea17cab04852a3b32d401766a84d5e
                    technical_name: description.4fea17cab04852a3b32d401766a84d5e
                    text: Cada porta pode ser uma porta para outro mundo.
                    id: 019bc309-1777-71e5-98c3-bff91d787182
                    updated_at: '2026-01-15T19:01:51.000000Z'
                    created_at: '2026-01-15T19:01:51.000000Z'
                    user:
                      id: 019b329a-3f1f-7198-89e5-008dc4e2bd60
                      old_id: null
                      name: Test User
                      description: Nostrum debitis pariatur dolorum sapiente.
                      email: tester@olie.ai
                      avatar_url: https://via.placeholder.com/124x124.png/00eebb?text=vero
                      status: 1
                      lang: en
                      email_verified_at: '2025-12-18 14:55:28'
        '201':
          description: Conteúdo enviado com sucesso
          content:
            application/json:
              schema:
                description: Esquema de um conteúdo
                title: Resposta de conteúdo
                type: object
                properties:
                  response:
                    type: boolean
                    example: true
                  media:
                    description: Objeto do conteúdo criado
                    type: object
                    title: Media
                    properties:
                      id:
                        type: string
                        format: uuid
                      name:
                        type: string
                      technical_name:
                        type: string
                      type:
                        type: integer
                        description: É o tipo do conteúdo enviado
                      extension:
                        type: string
                        description: >-
                          Quando um arquivo for enviado a sua extensão aparece
                          aqui
                      text:
                        type: string
                      file_url:
                        type: string
                        format: uri
                      log:
                        type: string
                      user_id:
                        type: string
                        format: uuid
                      frame_id:
                        type: string
                        format: uuid
                      project_id:
                        type: string
                        format: uuid
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                      deleted_at:
                        type: string
                        format: date-time
                      user:
                        type: object
              example:
                response: true
                media:
                  user_id: 019b329a-3f1f-7198-89e5-008dc4e2bd60
                  type: 1
                  frame_id: 019b329a-4346-7064-bba3-e7c19057cda4
                  project_id: 019bbcd3-2249-7357-ac43-8ab6209ec54c
                  name: description.46767bcea2ed5b93a9e55717177d08f0
                  technical_name: description.46767bcea2ed5b93a9e55717177d08f0
                  text: Amigos não mentem
                  id: 019bc2e1-e52e-72f5-a30c-f2a6c563188c
                  updated_at: '2026-01-15T18:19:02.000000Z'
                  created_at: '2026-01-15T18:19:02.000000Z'
                  user:
                    id: 019b329a-3f1f-7198-89e5-008dc4e2bd60
                    old_id: null
                    name: Test User
                    description: Nostrum debitis pariatur dolorum sapiente.
                    email: tester@olie.ai
                    avatar_url: https://via.placeholder.com/124x124.png/00eebb?text=vero
                    status: 1
                    lang: en
                    email_verified_at: '2025-12-18 14:55:28'
        '422':
          description: Erro de validação
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
              example: '*'
            Access-Control-Expose-Headers:
              schema:
                type: string
              example: '*'
            Cache-Control:
              schema:
                type: string
              example: no-cache, private
            Date:
              schema:
                type: string
              example: Thu, 15 Jan 2026 18:21:37 GMT
            X-Ratelimit-Limit:
              schema:
                type: integer
              example: 160
            X-Ratelimit-Remaining:
              schema:
                type: integer
              example: 150
            Transfer-Encoding:
              schema:
                type: string
              example: chunked
          content:
            application/json:
              schema:
                type: object
                properties:
                  response:
                    type: boolean
                  message:
                    type: string
                  error:
                    type: string
                  validation:
                    type: object
                    properties:
                      text:
                        type: array
                        items:
                          type: string
              example:
                response: false
                message: validation_errors
                error: The texto field is required when type is 1.
                validation:
                  text:
                    - The texto field is required when type is 1.
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````