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

# Générer des URL de téléversement présignées pour des fichiers multimédias

> Renvoie des URL S3 présignées pour chaque fichier. Téléversez chaque fichier avec une requête HTTP PUT vers son `uploadUrl`, avec un en-tête Content-Type égal au `mimetype` que vous avez déclaré pour ce fichier (par exemple `Content-Type: image/jpeg`). L'URL est signée avec cet en-tête : un PUT sans lui, ou avec une autre valeur, échoue avec une erreur 403 SignatureDoesNotMatch. Transmettez ensuite les valeurs `s3Prefix` et `fileSrc` renvoyées dans la requête de création de publication. Les types HTML, SVG, XML, script et inconnus sont refusés avec une erreur 400.



## OpenAPI

````yaml /fr/openapi.json post /v1/posts/presign-media
openapi: 3.0.0
info:
  title: Social media studio API
  description: >-
    L'API de Social media studio vous permet de gérer par programmation tout
    votre workflow de réseaux sociaux : créer et programmer des publications,
    organiser vos médias, suivre vos statistiques, gérer votre équipe, et plus
    encore.


    ## URL de base


    ```

    https://api.so-me.studio

    ```


    ## Authentification


    Tous les endpoints `/v1/*` exigent une clé d'API transmise dans l'en-tête
    `X-API-Key`.


    ```

    X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx

    ```


    ## Scopes


    Une clé a un accès complet, sauf si vous lui donnez des scopes lors de sa
    création. Une clé limitée à certains scopes ne peut appeler que les
    endpoints couverts par ses scopes ; les autres endpoints renvoient `403
    Forbidden`. Un endpoint `GET` exige `<resource>:read` ; `POST`, `PUT`,
    `PATCH` et `DELETE` exigent `<resource>:write`, qui inclut `read`.
    Ressources : `accounts`, `posts` (également les brouillons et les
    approbations), `media`, `analytics` (lecture seule), `inbox`, `ai`,
    `biolinks`, `teams`, `settings`, `webhooks`, `support`, `templates` (lecture
    seule), `whatsapp`. Les endpoints de clés d'API et d'espace de travail sous
    `/v1/settings`, ainsi que `PATCH /v1/settings/profile`, exigent une clé à
    accès complet. Les clés limitées à certains scopes ne peuvent pas utiliser
    le serveur MCP.


    ## Obtenir votre clé d'API


    1. Connectez-vous à votre espace de travail sur [Social media
    studio](https://so-me.studio)

    2. Allez dans **Paramètres** > onglet **API**

    3. Cliquez sur **Nouvelle clé API**, donnez-lui un nom et copiez la clé


    > La clé complète n'est affichée qu'une seule fois. Conservez-la en lieu
    sûr.


    ## Limites de débit


    60 requêtes par minute et par espace de travail. Au-delà, vous recevrez une
    réponse `429 Too Many Requests`.


    ## Forfaits


    L'accès à l'API est disponible avec les forfaits **Standard**, **Advanced**
    et **Lifetime**.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.so-me.studio
    description: Production
security: []
tags:
  - name: Posts
    description: >-
      Créer, gérer, programmer et publier des publications sur les réseaux
      sociaux
  - name: Accounts
    description: Gérer les comptes de réseaux sociaux connectés
  - name: Drafts
    description: Créer et gérer des brouillons
  - name: Media
    description: Téléverser, organiser et gérer des fichiers et dossiers multimédias
  - name: Analytics
    description: >-
      Statistiques au niveau des plateformes et des publications pour les
      comptes sociaux
  - name: Inbox
    description: >-
      Conversations de la boîte de réception sociale, réponses et réponses
      enregistrées
  - name: AI
    description: Génération de texte et d'images par IA
  - name: Approvals
    description: Workflow d'approbation des publications pour la collaboration d'équipe
  - name: Teams
    description: Gestion des membres de l'équipe et des invitations
  - name: Biolinks
    description: Pages de lien en bio avec boutons, publications et thèmes
  - name: Settings
    description: Profil, organisation, clés d'API, facturation et utilisation
  - name: Authentication
    description: >-
      Inscription, connexion, réinitialisation du mot de passe et autorisation
      d'appareil
  - name: Plans
    description: >-
      Forfaits d'abonnement, fonctionnalités et modules complémentaires
      disponibles
  - name: Public Biolink
    description: >-
      Résolution des pages biolink publiques et suivi des statistiques (aucune
      authentification requise)
paths:
  /v1/posts/presign-media:
    post:
      tags:
        - Posts
      summary: >-
        Générer des URL de téléversement présignées pour des fichiers
        multimédias
      description: >-
        Renvoie des URL S3 présignées pour chaque fichier. Téléversez chaque
        fichier avec une requête HTTP PUT vers son `uploadUrl`, avec un en-tête
        Content-Type égal au `mimetype` que vous avez déclaré pour ce fichier
        (par exemple `Content-Type: image/jpeg`). L'URL est signée avec cet
        en-tête : un PUT sans lui, ou avec une autre valeur, échoue avec une
        erreur 403 SignatureDoesNotMatch. Transmettez ensuite les valeurs
        `s3Prefix` et `fileSrc` renvoyées dans la requête de création de
        publication. Les types HTML, SVG, XML, script et inconnus sont refusés
        avec une erreur 400.
      operationId: V1PostsController_presignMedia
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresignV1MediaDto'
      responses:
        '201':
          description: URL présignées générées
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    fileId:
                      type: string
                      description: UUID de l'enregistrement du fichier
                    uploadUrl:
                      type: string
                      description: >-
                        URL PUT présignée (expire au bout d'1 heure). Envoyez le
                        fichier avec un Content-Type égal au mimetype déclaré.
                    s3Prefix:
                      type: string
                      description: >-
                        Clé de l'objet S3 : à transmettre lors de la création de
                        la publication
                    fileSrc:
                      type: string
                      description: >-
                        URL publique du CDN : à transmettre lors de la création
                        de la publication
      security:
        - X-API-Key: []
components:
  schemas:
    PresignV1MediaDto:
      type: object
      properties:
        postType:
          enum:
            - TEXT
            - IMAGE
            - MULTIPLE_IMAGES
            - VIDEO
            - CAROUSEL
            - REEL
            - STORY
          type: string
          description: Type de publication auquel le média est destiné
        socialMedia:
          enum:
            - TWITTER
            - INSTAGRAM
            - LINKEDIN
            - LINKEDIN_PAGE
            - FACEBOOK
            - TIKTOK
            - YOUTUBE
            - THREADS
            - WHATSAPP
          type: string
          description: Plateforme de réseau social cible
        files:
          description: Fichiers pour lesquels générer des URL de téléversement
          type: array
          items:
            $ref: '#/components/schemas/PresignV1FileItemDto'
      required:
        - postType
        - socialMedia
        - files
    PresignV1FileItemDto:
      type: object
      properties:
        filename:
          type: string
          description: Nom de fichier d'origine
        mimetype:
          type: string
          description: >-
            Type MIME (p. ex. image/jpeg, video/mp4). Le PUT de téléversement
            doit envoyer exactement cette valeur comme en-tête Content-Type.
        size:
          type: number
          description: Taille du fichier en octets
        duration:
          type: number
          minimum: 0.1
          maximum: 86400
          description: Durée de la vidéo en secondes
      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.