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

# Download contract folder

> Download the latest release author contract as a zip of slot files.

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

Authentication: API key required (`Authorization: Bearer <API Key>`). App author only; others get `404`.

Author-side contract for the latest release, split into the canonical contract folder layout and zipped on the server. Same data source as Get manifest (file references already inlined). The zip contains one top-level `<app_name>/` directory; `Content-Disposition` names the file `<app_name>.zip`.

Zero releases returns `404 release-not-found`: semantics are “latest release”, never falling back to the draft. Non-slot editor companion state is omitted, so download → edit → import is a lossless round-trip for api-kind apps. When the app has translations, the zip also includes `i18n.json` (current translations, not the ones at publish time).

## Request

### Path parameters

<ParamField path="app_id" type="string" required>
  App reference.
</ParamField>

### Example request

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

## Response

### 200 success

Response body is `application/zip` binary.

### Errors

| HTTP | `code`              | `category`  | Description                                                  |
| ---- | ------------------- | ----------- | ------------------------------------------------------------ |
| 401  | `unauthorized`      | `forbidden` | Missing or invalid API key.                                  |
| 404  | `release-not-found` | `not_found` | That version does not exist, or the app has no releases yet. |

Error responses use `{"error": {code, category, message, retryable}}`. See <a href="/docs/en/datahub/api/reference/introduction#errors">Errors</a>.

## Client libraries

The Python and JavaScript SDKs do not wrap this endpoint yet. Call REST directly.
