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

# Export a Brand Skill

> Download a portable ZIP of a Brand Skill and its assets.

Export a ZIP when a person or agent needs the complete Brand Skill folder: Markdown guidance, referenced images, packaged fonts, font specimens, and asset manifest. Start with a brand that has an active Skill and an [API key](/api/authentication).

If your application needs the profile and files as structured data, [retrieve the active Skill](/guides/use-brand-skill) instead.

This export flow is available through REST. MCP clients inspect brand context through their live tool schemas; there is no separate public MCP export operation.

## Start the export

Call `POST /brands/{id}/exports` to start or reuse an export for the active Skill:

```bash theme={null}
curl -X POST "https://www.trybloom.ai/api/v1/brands/$BRAND_ID/exports" \
  -H "x-api-key: $BLOOM_API_KEY"
```

Bloom returns `202 Accepted` with the immutable `skillId` selected for the export:

```json theme={null}
{
  "data": {
    "id": "f7e319aa-2a7f-4f2a-853a-eb5a5798659e",
    "skillId": "8a7a6a03-e399-4ae6-910b-1d50e936cc5c",
    "status": "preparing"
  }
}
```

Repeating this request while the same Skill is active reuses its in-progress or completed export instead of creating a duplicate.

## Wait for the archive

Set `SKILL_ID` to the returned `skillId`. Poll that exact Skill with `GET /brands/{id}/exports/{skillId}` until the status is `ready` or `failed`:

```bash theme={null}
curl "https://www.trybloom.ai/api/v1/brands/$BRAND_ID/exports/$SKILL_ID" \
  -H "x-api-key: $BLOOM_API_KEY"
```

A ready response contains a temporary signed download URL:

```json theme={null}
{
  "data": {
    "id": "f7e319aa-2a7f-4f2a-853a-eb5a5798659e",
    "skillId": "8a7a6a03-e399-4ae6-910b-1d50e936cc5c",
    "status": "ready",
    "download": {
      "url": "https://storage.example/brand-skill.zip?token=...",
      "filename": "acme-brand-skill.zip",
      "byteLength": 2481634
    }
  }
}
```

## Use the exported Skill

Download the ZIP before the signed URL expires. Preserve the extracted folder and its relative paths. Start with `SKILL.md`, which routes the agent to the supporting guidance and assets it needs.

If a newer Skill becomes active while the export is being prepared, the status request stays pinned to the returned `skillId`; request another export to select the new active Skill.

## Handle an unavailable export

If the status is `failed`, check `failure.retryable`. When it is `true`, repeat the POST request. A non-retryable failure means the same Skill cannot be exported unchanged. Export failure affects the download only; the ready brand remains usable.

If the status request returns `404 BRAND_EXPORT_NOT_FOUND`, start an export and poll the `skillId` returned by the POST request.

A `409 BRAND_SKILL_UNAVAILABLE` response means there is no active exportable Skill. Wait if `GET /brands/{id}` reports `status: "analyzing"`; otherwise use a brand with an active Skill before retrying.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.