APIs
========
Générer une transcription
--------------------------
.. raw:: html
Pour transcrire un enregistrement audio, envoyez votre fichier via l'endpoint ``get-upload-url``.
Celui-ci génère une URL présignée vous permettant de téléverser votre fichier directement vers
notre stockage sécurisé. Une fois le téléversement complété, la transcription est lancée
automatiquement et le résultat est transmis à votre webhook.
- `Étape 1 — Obtenir une URL présignée <#etape-1>`_
- `Étape 2 — Téléverser le fichier <#etape-2>`_
- `Étape 3 — Recevoir la transcription <#etape-3>`_
- `Exemple de code <#exemple-de-code>`_
.. raw:: html
:http:`POST https://api2.app.plumeia.ca/get-upload-url`
.. list-table::
:header-rows: 1
:widths: 25 15 60
* - Paramètre
- Type
- Description
* - ``Content-Type`` *(header)*
- string
- Doit être ``application/json``
* - ``x-api-key`` *(header)*
- string
- Clé API fournie par Plume
* - ``filename``
- string
- Nom du fichier à téléverser
* - ``username``
- string
- Identifiant de l'utilisateur
* - ``language``
- string
- Langue de l'enregistrement (``fr`` ou ``en``)
* - ``webhook`` *(optionnel)*
- string
- URL de rappel appelée lorsque la transcription est disponible. Si absente, le webhook par défaut configuré lors de l'intégration est utilisé.
**Exemple**
.. code-block:: python
response = requests.post(
'https://api2.app.plumeia.ca/get-upload-url',
headers={
'Content-Type': 'application/json',
'x-api-key': API_KEY
},
json={
'filename': file_path,
'username': username,
'language': language,
'webhook': 'https://votre-serveur.com/webhook'
}
)
**Réponse**
.. list-table::
:header-rows: 1
:widths: 25 15 60
* - Champ
- Type
- Description
* - ``upload_url``
- string
- URL présignée pour le téléversement
* - ``headers``
- object
- En-têtes à inclure lors du téléversement
.. raw:: html
.. raw:: html
Utilisez l'URL et les en-têtes retournés à l'étape précédente pour téléverser votre fichier.
La transcription sera automatiquement lancée et le résultat sera transmis à votre webhook.
:http:`PUT {upload_url}`
.. list-table::
:header-rows: 1
:widths: 25 15 60
* - Paramètre
- Type
- Description
* - ``headers``
- object
- En-têtes retournés par ``get-upload-url``
* - ``data``
- binary
- Contenu binaire du fichier audio
**Exemple**
.. code-block:: python
with open(file, 'rb') as f:
upload_response = requests.put(
data['upload_url'],
data=f,
headers=data['headers']
)
.. raw:: html
.. raw:: html
Une fois le téléversement complété, la transcription est lancée automatiquement. Le résultat
est transmis à votre webhook sous forme d'objet JSON.
.. list-table::
:header-rows: 1
:widths: 25 15 60
* - Champ
- Type
- Description
* - ``user_id``
- string
- Identifiant de l'utilisateur
* - ``status``
- string
- Statut de la transcription (``SUCCESS`` ou ``ERREUR``)
* - ``timestamp``
- string
- Horodatage marquant la fin de la transcription
* - ``transcription``
- string
- Texte transcrit, ou message d'erreur si la transcription a échoué
**Réponse — succès**
.. code-block:: json
{
"user_id": "user01",
"status": "SUCCESS",
"timestamp": "timestamp",
"transcription": "Voici le contenu de l'enregistrement."
}
**Réponse — erreur**
.. code-block:: json
{
"user_id": "user01",
"status": "ERREUR",
"timestamp": "timestamp",
"transcription": "ERREUR: [description de l'erreur]"
}
.. raw:: html
Exemple de code
~~~~~~~~~~~~~~~~
.. raw:: html
.. code-block:: python
import requests
API_KEY = 'votre_clé_api'
def upload_file(file_path, username, language, webhook=None):
response = requests.post(
'https://api2.app.plumeia.ca/get-upload-url'
headers={
'Content-Type': 'application/json',
'x-api-key': API_KEY
},
json={
'filename': file_path,
'username': username,
'language': language,
'webhook': webhook
}
)
if response.status_code != 200:
raise Exception(f"Erreur : {response.status_code} : {response.text}")
data = response.json()
with open(file_path, 'rb') as f:
upload_response = requests.put(
data['upload_url'],
data=f,
headers=data['headers']
)
if upload_response.status_code != 200:
raise Exception(f"{upload_response.status_code} : {upload_response.text}")
else:
print("Upload successful")
if __name__ == "__main__":
try:
upload_file("docs/myfile.wav", "user01", "fr", "mywebhook.com")
except Exception as e:
print(f"Erreur : {e}")
.. raw:: html