Aller au contenu

Amazon Photos API - Documentation Authentification

Vue d'ensemble

L'API Amazon Photos/Drive nécessite une authentification via cookies de session Amazon. La librairie Python amazon_photos est utilisée pour interagir avec l'API.

Headers HTTP requis

Header critique : x-amz-clouddrive-appid

Ce header est obligatoire pour toutes les requêtes à l'API Amazon Drive/Photos.

x-amz-clouddrive-appid: YW16bjEuYXBwbGljYXRpb24uMjllMmU2YjgxZDE3NDhjYWIxZjM4MDQwZGZmMjJkYmY

Note : La valeur est un identifiant d'application encodé en base64. C'est toujours la même valeur.

Sans ce header, l'API renvoie systématiquement une erreur 401 Unauthorized avec le message "BadToken" ou "Get error during session authentication".

Autres headers requis

Header Valeur Description
User-Agent Browser UA string Ex: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
x-amzn-sessionid Valeur du cookie session-id Identifiant de session Amazon
Accept */* Types de contenu acceptés
Accept-Language en_US ou fr_FR Langue
Referer https://www.amazon.fr/ Page de référence

Headers optionnels (navigateur)

Ces headers sont envoyés par le navigateur mais ne sont pas strictement nécessaires :

sec-ch-ua: "Chromium";v="145", "Google Chrome";v="145"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin

Cookies requis

Les cookies doivent être extraits d'une session authentifiée sur amazon.fr (ou autre TLD selon le pays).

Cookies obligatoires

Cookie Description Exemple de valeur
session-id Identifiant de session 260-1305919-9156156
session-token Token de session (long) QExajR6kOibPvZxhFp66...
at-acbfr Token d'authentification Atza Atza\|gQAK8wV_AwEBAt...
sess-at-acbfr Token de session signé FdV6VL8MhuAXjID6fje...
sst-acbfr SST token Sst1\|PQK_Ra-v0mTff7...
x-acbfr Token X UsxeNctz4CIg8TwNb6x...
ubid-acbfr Identifiant utilisateur 259-1536965-5200042

Cookies optionnels

Cookie Description Valeur
i18n-prefs Préférences devise EUR
lc-acbfr Langue/pays fr_FR

Suffixe TLD

Le suffixe -acbfr indique le TLD français (.fr). Pour d'autres pays : - .com : pas de suffixe ou _main - .co.uk : -acbgb - .de : -acbde - etc.

Format du fichier cookies.json

{
    "session-id": "260-1305919-9156156",
    "session-token": "QExajR6kOibPvZxhFp66mcbFf1pvI1+xr+...",
    "at-acbfr": "Atza|gQAK8wV_AwEBAt-33ObMWeNtpF8DlSA3k7_t...",
    "sess-at-acbfr": "FdV6VL8MhuAXjID6fjedEO0GAdNG4V7+GGIBuP5F52g=",
    "sst-acbfr": "Sst1|PQK_Ra-v0mTff7xyCU35CQdqCUFnrCdPXvIUHTyb...",
    "x-acbfr": "UsxeNctz4CIg8TwNb6xIWPx9DDAZNWf1?7oq6LRwp930...",
    "ubid-acbfr": "259-1536965-5200042",
    "i18n-prefs": "EUR",
    "lc-acbfr": "fr_FR"
}

Endpoints API

Base URL

https://www.amazon.{tld}/drive/v1/

Endpoints principaux

Endpoint Méthode Description
/nodes?filters=isRoot:true GET Récupérer le nœud racine
/nodes/{nodeId}/children GET Lister les enfants d'un dossier
/nodes/{nodeId} GET Détails d'un nœud
/nodes POST Créer un nœud (dossier/fichier)
/nodes/{nodeId}/content PUT Uploader contenu

Paramètres communs

asset=ALL
tempLink=false
resourceVersion=V2
ContentType=JSON

Patch de la librairie amazon_photos

La librairie amazon_photos ne contient pas le header x-amz-clouddrive-appid par défaut. Il faut patcher le fichier _api.py :

Localisation du fichier

{venv}/lib/python3.11/site-packages/amazon_photos/_api.py

Modification

Ligne ~70, dans le constructeur __init__, section headers du Client :

Avant :

headers={
    'user-agent': random.choice(USER_AGENTS),
    'x-amzn-sessionid': cookies['session-id'],
},

Après :

headers={
    'user-agent': random.choice(USER_AGENTS),
    'x-amzn-sessionid': cookies['session-id'],
    'x-amz-clouddrive-appid': 'YW16bjEuYXBwbGljYXRpb24uMjllMmU2YjgxZDE3NDhjYWIxZjM4MDQwZGZmMjJkYmY',
},

Commande de patch

sed -i "s/'x-amzn-sessionid': cookies\['session-id'\],/'x-amzn-sessionid': cookies['session-id'],\n                'x-amz-clouddrive-appid': 'YW16bjEuYXBwbGljYXRpb24uMjllMmU2YjgxZDE3NDhjYWIxZjM4MDQwZGZmMjJkYmY',/" \
    /opt/amazon-sync/venv/lib/python3.11/site-packages/amazon_photos/_api.py

Extraction des cookies

Méthode 1 : Extension navigateur

Utiliser une extension comme "Cookie-Editor" ou "EditThisCookie" : 1. Se connecter à amazon.fr 2. Aller sur la page Amazon Photos 3. Exporter les cookies au format JSON 4. Extraire les cookies nécessaires

Méthode 2 : DevTools

  1. Ouvrir DevTools (F12)
  2. Onglet Network
  3. Se connecter à Amazon Photos
  4. Cliquer sur une requête vers /drive/v1/
  5. Copier les cookies depuis l'onglet Headers

Méthode 3 : HAR Export

  1. Ouvrir DevTools (F12)
  2. Onglet Network
  3. Naviguer sur Amazon Photos
  4. Clic droit → "Save all as HAR"
  5. Extraire les cookies et headers du fichier HAR

Durée de validité

Les cookies Amazon ont une durée de vie variable : - session-token : ~1-2 semaines - at-acbfr (Atza) : quelques heures à quelques jours - session-id : plusieurs mois

Il est recommandé de rafraîchir les cookies régulièrement (toutes les semaines) pour éviter les erreurs 401.

Erreurs courantes

Code Message Cause Solution
401 "BadToken" Header x-amz-clouddrive-appid manquant Ajouter le header
401 "Get error during session authentication" Cookies expirés ou incomplets Rafraîchir les cookies
403 "Forbidden" Compte non autorisé Vérifier l'abonnement Amazon Photos
429 "Too Many Requests" Rate limiting Attendre et réessayer avec backoff

Référence

  • Librairie : amazon-photos
  • API non officielle : Reverse-engineered depuis l'interface web Amazon Photos
  • TLD supportés : .com, .fr, .co.uk, .de, .es, .it, etc.