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

# Télécharger le dossier de contrat

> Télécharger le contrat auteur de la dernière release en zip de fichiers de slot.

**`GET`** `https://api-datahub.octoparse.com/v1/data-apps/{app_id}/contract.zip`

Authentification : clé API requise (`Authorization: Bearer <API Key>`). Auteur de l’app uniquement ; les autres reçoivent `404`.

Contrat côté auteur de la dernière release, découpé en couche canonique de dossier de contrat. Téléchargez le zip et éditez les fichiers de slot pour republier.

Zéro release renvoie `404 release-not-found` : la sémantique est « dernière release », jamais de retombée sur le brouillon. Les self-checks auteur utilisent toujours les endpoints workspace.

## Requête

### Paramètres de chemin

<ParamField path="app_id" type="string" required>
  Référence d’app.
</ParamField>

### Exemple de requête

```bash theme={null}
curl \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  "https://api-datahub.octoparse.com/v1/data-apps/carol/reviews-query/contract.zip"
```

## Réponse

### 200 succès

Le corps de la réponse est binaire `application/zip`.

### Erreurs

| HTTP | `code`              | `category`  | Description                                                      |
| ---- | ------------------- | ----------- | ---------------------------------------------------------------- |
| 401  | `unauthorized`      | `forbidden` | Clé API manquante ou invalide.                                   |
| 404  | `release-not-found` | `not_found` | Cette version n’existe pas, ou l’app n’a pas encore de releases. |

Les réponses d’erreur utilisent `{"error": {code, category, message, retryable}}`. Voir <a href="/docs/fr/datahub/api/reference/introduction#errors">Erreurs</a>.

## Bibliothèques clientes

Les SDK Python et JavaScript n’encapsulent pas encore cet endpoint. Appelez REST directement.
