> ## 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.

# Vorsignierte Upload-URLs für Mediendateien erzeugen

> Gibt für jede Datei vorsignierte S3-URLs zurück. Lade jede Datei per HTTP PUT an ihre uploadUrl hoch, mit einem Content-Type-Header, der dem für diese Datei angegebenen mimetype entspricht (zum Beispiel `Content-Type: image/jpeg`). Die URL ist mit diesem Header signiert; ein PUT ohne ihn oder mit einem anderen Wert schlägt daher mit 403 SignatureDoesNotMatch fehl. Übergib anschließend die zurückgegebenen Werte s3Prefix und fileSrc in der Anfrage zum Erstellen des Beitrags. HTML, SVG, XML, Skripte und unbekannte Typen werden mit 400 abgelehnt.



## OpenAPI

````yaml /de/openapi.json post /v1/posts/presign-media
openapi: 3.0.0
info:
  title: Social media studio API
  description: >-
    Die Social media studio API ermöglicht es dir, deinen Social-Media-Workflow
    programmatisch zu steuern – Beiträge erstellen und planen, Medien
    organisieren, Analysen abrufen, dein Team verwalten und mehr.


    ## Basis-URL


    ```

    https://api.so-me.studio

    ```


    ## Authentifizierung


    Alle `/v1/*`-Endpunkte erfordern einen API-Schlüssel, der im Header
    `X-API-Key` übergeben wird.


    ```

    X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx

    ```


    ## Scopes


    Ein Schlüssel hat vollen Zugriff, es sei denn, du vergibst beim Erstellen
    Scopes. Ein Schlüssel mit Scopes kann nur die Endpunkte aufrufen, die seine
    Scopes abdecken; andere Endpunkte liefern `403 Forbidden`. Ein
    `GET`-Endpunkt benötigt `<resource>:read`; `POST`, `PUT`, `PATCH` und
    `DELETE` benötigen `<resource>:write`, was `read` einschließt. Ressourcen:
    `accounts`, `posts` (auch Entwürfe und Freigaben), `media`, `analytics` (nur
    lesend), `inbox`, `ai`, `biolinks`, `teams`, `settings`, `webhooks`,
    `support`, `templates` (nur lesend), `whatsapp`. Die Endpunkte für
    API-Schlüssel und Workspaces unter `/v1/settings` sowie `PATCH
    /v1/settings/profile` erfordern einen Schlüssel mit vollem Zugriff.
    Schlüssel mit Scopes können den MCP-Server nicht nutzen.


    ## API-Schlüssel erhalten


    1. Melde dich bei deinem Workspace in [Social media
    studio](https://so-me.studio/de) an

    2. Gehe zu **Einstellungen** > Tab **API**

    3. Klicke auf **Neuer API-Schlüssel**, vergib einen Namen und kopiere den
    Schlüssel


    > Der vollständige Schlüssel wird nur einmal angezeigt. Bewahre ihn sicher
    auf.


    ## Rate Limits


    60 Anfragen pro Minute und Workspace. Wenn du dieses Limit überschreitest,
    erhältst du eine Antwort `429 Too Many Requests`.


    ## Tarife


    Der API-Zugriff ist in den Tarifen **Standard**, **Advanced** und
    **Lifetime** verfügbar.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.so-me.studio
    description: Produktion
security: []
tags:
  - name: Posts
    description: Social-Media-Beiträge erstellen, verwalten, planen und veröffentlichen
  - name: Accounts
    description: Verbundene Social-Media-Konten verwalten
  - name: Drafts
    description: Entwürfe erstellen und verwalten
  - name: Media
    description: Mediendateien und Ordner hochladen, organisieren und verwalten
  - name: Analytics
    description: >-
      Analysen auf Plattform- und Beitragsebene über alle Social-Media-Konten
      hinweg
  - name: Inbox
    description: >-
      Unterhaltungen, Antworten und gespeicherte Antworten im
      Social-Media-Posteingang
  - name: AI
    description: KI-gestützte Text- und Bildgenerierung
  - name: Approvals
    description: Freigabe-Workflow für Beiträge zur Zusammenarbeit im Team
  - name: Teams
    description: Verwaltung von Teammitgliedern und Einladungen
  - name: Biolinks
    description: Biolink-Seiten mit Buttons, Beiträgen und Themes
  - name: Settings
    description: Profil, Organisation, API-Schlüssel, Abrechnung und Nutzung
  - name: Authentication
    description: Registrierung, Anmeldung, Passwort zurücksetzen und Geräte-Autorisierung
  - name: Plans
    description: Verfügbare Abonnement-Tarife, Funktionen und Add-ons
  - name: Public Biolink
    description: >-
      Auflösung öffentlicher Biolink-Seiten und Analyse-Tracking (keine
      Authentifizierung erforderlich)
paths:
  /v1/posts/presign-media:
    post:
      tags:
        - Posts
      summary: Vorsignierte Upload-URLs für Mediendateien erzeugen
      description: >-
        Gibt für jede Datei vorsignierte S3-URLs zurück. Lade jede Datei per
        HTTP PUT an ihre uploadUrl hoch, mit einem Content-Type-Header, der dem
        für diese Datei angegebenen mimetype entspricht (zum Beispiel
        `Content-Type: image/jpeg`). Die URL ist mit diesem Header signiert; ein
        PUT ohne ihn oder mit einem anderen Wert schlägt daher mit 403
        SignatureDoesNotMatch fehl. Übergib anschließend die zurückgegebenen
        Werte s3Prefix und fileSrc in der Anfrage zum Erstellen des Beitrags.
        HTML, SVG, XML, Skripte und unbekannte Typen werden mit 400 abgelehnt.
      operationId: V1PostsController_presignMedia
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresignV1MediaDto'
      responses:
        '201':
          description: Vorsignierte URLs erzeugt
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    fileId:
                      type: string
                      description: UUID des Dateieintrags
                    uploadUrl:
                      type: string
                      description: >-
                        Vorsignierte PUT-URL (läuft nach 1 Stunde ab). Sende die
                        Datei mit einem Content-Type, der dem angegebenen
                        mimetype entspricht.
                    s3Prefix:
                      type: string
                      description: >-
                        S3-Objektschlüssel – übergib ihn beim Erstellen des
                        Beitrags
                    fileSrc:
                      type: string
                      description: >-
                        Öffentliche CDN-URL – übergib sie beim Erstellen des
                        Beitrags
      security:
        - X-API-Key: []
components:
  schemas:
    PresignV1MediaDto:
      type: object
      properties:
        postType:
          enum:
            - TEXT
            - IMAGE
            - MULTIPLE_IMAGES
            - VIDEO
            - CAROUSEL
            - REEL
            - STORY
          type: string
          description: Beitragstyp, für den die Medien gedacht sind
        socialMedia:
          enum:
            - TWITTER
            - INSTAGRAM
            - LINKEDIN
            - LINKEDIN_PAGE
            - FACEBOOK
            - TIKTOK
            - YOUTUBE
            - THREADS
            - WHATSAPP
          type: string
          description: Ziel-Plattform
        files:
          description: Dateien, für die Upload-URLs erzeugt werden sollen
          type: array
          items:
            $ref: '#/components/schemas/PresignV1FileItemDto'
      required:
        - postType
        - socialMedia
        - files
    PresignV1FileItemDto:
      type: object
      properties:
        filename:
          type: string
          description: Ursprünglicher Dateiname
        mimetype:
          type: string
          description: >-
            MIME-Typ (z. B. image/jpeg, video/mp4). Der Upload-PUT muss genau
            diesen Wert als Content-Type-Header senden.
        size:
          type: number
          description: Dateigröße in Bytes
        duration:
          type: number
          minimum: 0.1
          maximum: 86400
          description: Videodauer in Sekunden
      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.