---
raw: true
search:
  tags:
    - Teams
    - POST
seo:
  description: >-
    Uploads one image (PNG, JPEG, WebP, sanitized SVG), PDF,… Reference for the
    POST /v1/teams/{teamId}/design-system/assets/upload endpoint in the
    Spacefast API.
sidebar:
  label: Upload a design-system asset to WordPress media
  badge: POST
title: Upload a design-system asset to WordPress media
type: openapi-operation
---
Uploads one image (PNG, JPEG, WebP, sanitized SVG), PDF, Word (DOCX), PowerPoint (PPT/PPTX), font (WOFF/WOFF2/TTF/OTF/EOT), JSON token file, UTF-8 guidance or source file (Markdown, text, JSONC, YAML, CSS/SCSS/Sass/Less, HTML, JS/JSX/TS/TSX, Vue/Svelte), or original ZIP of at most 100 MB to the team's WordPress Media Library. Match the filename extension to contentType; its schema lists accepted pairs. Supply file bytes as contentBase64, not a local path. References are retained files, downloaded privately as attachments; they are never executed or extracted. Reuse operationId and the same input after an uncertain response. Returns an attachmentId; add or replace its design-system asset record with updateTeamDesignSystem. Upload alone does not change the design-system revision. Requires the team context beta.

`POST /v1/teams/{teamId}/design-system/assets/upload`

**Request body** (`application/json`, required)

- `operationId` (string, required)
- `filename` (string, required)
- `contentType` (string, required) — \`png\`: \`image/png\`; \`jpg|jpeg\`: \`image/jpeg\`; \`webp\`: \`image/webp\`; \`svg\`: \`image/svg+xml\`; \`pdf\`: \`application/pdf\`; \`docx\`: \`application/vnd.openxmlformats-officedocument.wordprocessingml.document\`; \`ppt\`: \`application/vnd.ms-powerpoint\`; \`pptx\`: \`application/vnd.openxmlformats-officedocument.presentationml.presentation\`; \`woff\`: \`font/woff\`; \`woff2\`: \`font/woff2\`; \`ttf\`: \`font/ttf\`; \`otf\`: \`font/otf\`; \`eot\`: \`application/vnd.ms-fontobject\`; \`json\`: \`application/json\`; \`md|markdown\`: \`text/markdown\`; \`txt|md|markdown|jsonc|yaml|yml|css|scss|sass|less|html|htm|js|mjs|cjs|jsx|ts|tsx|vue|svelte\`: \`text/plain\`; \`css\`: \`text/css\`; \`html|htm\`: \`text/html\`; \`js|mjs|cjs|jsx\`: \`text/javascript\`; \`js|mjs|cjs|jsx\`: \`application/javascript\`; \`ts|tsx\`: \`application/typescript\`; \`yaml|yml\`: \`application/yaml\`; \`zip\`: \`application/zip\`
- `contentBase64` (string, required)

Request body example:

```json
{
  "operationId": "string",
  "filename": "string",
  "contentType": "image/png",
  "contentBase64": "string"
}
```

**Responses**

- `200` — Response for status 200
- `default` — Problem details (RFC 9457). Any 4xx/5xx response is one \`application/problem+json\` document.

Response example, 200:

```json
{
  "$schema": "http://example.com",
  "data": {
    "attachmentId": 1,
    "filename": "string",
    "contentType": "string",
    "size": 1
  }
}
```
