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

# Gerar URLs de upload pré-assinadas para arquivos de mídia

> Retorna URLs S3 pré-assinadas para cada arquivo. Envie cada arquivo com um PUT HTTP para o seu uploadUrl, com um cabeçalho Content-Type igual ao mimetype que você declarou para esse arquivo (por exemplo `Content-Type: image/jpeg`). A URL é assinada com esse cabeçalho, então um PUT sem ele, ou com outro valor, falha com 403 SignatureDoesNotMatch. Depois, passe os valores s3Prefix e fileSrc retornados na requisição de criação de publicação. HTML, SVG, XML, scripts e tipos desconhecidos são recusados com 400.



## OpenAPI

````yaml /pt-BR/openapi.json post /v1/posts/presign-media
openapi: 3.0.0
info:
  title: Social media studio API
  description: >-
    A API do Social media studio permite gerenciar seu fluxo de trabalho de
    redes sociais via código: criar e agendar publicações, organizar mídia,
    acompanhar análises, gerenciar sua equipe e mais.


    ## URL base


    ```

    https://api.so-me.studio

    ```


    ## Autenticação


    Todos os endpoints `/v1/*` exigem uma chave de API enviada no cabeçalho
    `X-API-Key`.


    ```

    X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx

    ```


    ## Scopes


    Uma chave tem acesso total, a menos que você defina scopes ao criá-la. Uma
    chave com scopes só pode chamar os endpoints cobertos por eles; os demais
    endpoints retornam `403 Forbidden`. Um endpoint `GET` exige
    `<resource>:read`; `POST`, `PUT`, `PATCH` e `DELETE` exigem
    `<resource>:write`, que inclui `read`. Recursos: `accounts`, `posts` (também
    rascunhos e aprovações), `media`, `analytics` (somente leitura), `inbox`,
    `ai`, `biolinks`, `teams`, `settings`, `webhooks`, `support`, `templates`
    (somente leitura), `whatsapp`. Os endpoints de chaves de API e de espaço de
    trabalho em `/v1/settings`, e `PATCH /v1/settings/profile`, exigem uma chave
    de acesso total. Chaves com scopes não podem usar o servidor MCP.


    ## Obter sua chave de API


    1. Entre no seu espaço de trabalho no [Social media
    studio](https://so-me.studio/pt-BR)

    2. Vá em **Configurações** > aba **API**

    3. Clique em **Nova chave de API**, dê um nome a ela e copie a chave


    > A chave completa é exibida apenas uma vez. Guarde-a com segurança.


    ## Limites de taxa


    60 requisições por minuto por espaço de trabalho. Se você exceder esse
    limite, receberá uma resposta `429 Too Many Requests`.


    ## Planos


    O acesso à API está disponível nos planos **Standard**, **Advanced** e
    **Lifetime**.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.so-me.studio
    description: Produção
security: []
tags:
  - name: Posts
    description: Criar, gerenciar, agendar e publicar publicações de redes sociais
  - name: Accounts
    description: Gerenciar as contas de redes sociais conectadas
  - name: Drafts
    description: Criar e gerenciar rascunhos
  - name: Media
    description: Enviar, organizar e gerenciar arquivos e pastas de mídia
  - name: Analytics
    description: Análises no nível da plataforma e da publicação em todas as contas sociais
  - name: Inbox
    description: Conversas, respostas e respostas salvas da caixa de entrada social
  - name: AI
    description: Geração de texto e imagem com IA
  - name: Approvals
    description: Fluxo de aprovação de publicações para colaboração da equipe
  - name: Teams
    description: Gerenciamento de membros da equipe e convites
  - name: Biolinks
    description: Páginas de link na bio com botões, publicações e temas
  - name: Settings
    description: Perfil, organização, chaves de API, faturamento e uso
  - name: Authentication
    description: Cadastro, login, redefinição de senha e autorização de dispositivo
  - name: Plans
    description: Planos de assinatura, recursos e complementos disponíveis
  - name: Public Biolink
    description: >-
      Resolução de páginas de biolink públicas e rastreamento de análises (sem
      autenticação)
paths:
  /v1/posts/presign-media:
    post:
      tags:
        - Posts
      summary: Gerar URLs de upload pré-assinadas para arquivos de mídia
      description: >-
        Retorna URLs S3 pré-assinadas para cada arquivo. Envie cada arquivo com
        um PUT HTTP para o seu uploadUrl, com um cabeçalho Content-Type igual ao
        mimetype que você declarou para esse arquivo (por exemplo `Content-Type:
        image/jpeg`). A URL é assinada com esse cabeçalho, então um PUT sem ele,
        ou com outro valor, falha com 403 SignatureDoesNotMatch. Depois, passe
        os valores s3Prefix e fileSrc retornados na requisição de criação de
        publicação. HTML, SVG, XML, scripts e tipos desconhecidos são recusados
        com 400.
      operationId: V1PostsController_presignMedia
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresignV1MediaDto'
      responses:
        '201':
          description: URLs pré-assinadas geradas
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    fileId:
                      type: string
                      description: UUID do registro do arquivo
                    uploadUrl:
                      type: string
                      description: >-
                        URL PUT pré-assinada (expira em 1 hora). Envie o arquivo
                        com Content-Type igual ao mimetype declarado.
                    s3Prefix:
                      type: string
                      description: 'Chave do objeto S3: passe-a ao criar a publicação'
                    fileSrc:
                      type: string
                      description: 'URL pública da CDN: passe-a ao criar a publicação'
      security:
        - X-API-Key: []
components:
  schemas:
    PresignV1MediaDto:
      type: object
      properties:
        postType:
          enum:
            - TEXT
            - IMAGE
            - MULTIPLE_IMAGES
            - VIDEO
            - CAROUSEL
            - REEL
            - STORY
          type: string
          description: Tipo de publicação a que a mídia se destina
        socialMedia:
          enum:
            - TWITTER
            - INSTAGRAM
            - LINKEDIN
            - LINKEDIN_PAGE
            - FACEBOOK
            - TIKTOK
            - YOUTUBE
            - THREADS
            - WHATSAPP
          type: string
          description: Plataforma de rede social de destino
        files:
          description: Arquivos para os quais gerar URLs de upload
          type: array
          items:
            $ref: '#/components/schemas/PresignV1FileItemDto'
      required:
        - postType
        - socialMedia
        - files
    PresignV1FileItemDto:
      type: object
      properties:
        filename:
          type: string
          description: Nome original do arquivo
        mimetype:
          type: string
          description: >-
            Tipo MIME (por exemplo image/jpeg, video/mp4). O PUT de upload deve
            enviar exatamente esse valor como cabeçalho Content-Type.
        size:
          type: number
          description: Tamanho do arquivo em bytes
        duration:
          type: number
          minimum: 0.1
          maximum: 86400
          description: Duração do vídeo em segundos
      required:
        - filename
        - mimetype
        - size
  securitySchemes:
    X-API-Key:
      type: apiKey
      in: header
      name: X-API-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.