---
title: "Upload a design-system asset to WordPress media"
method: POST
path: "/v1/teams/{teamId}/design-system/assets/upload"
tags: ["Teams"]
---

# Upload a design-system asset to WordPress media

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

## Request

- Base URL: `https://api.spacefast.com`
- URL: `https://api.spacefast.com/v1/teams/{teamId}/design-system/assets/upload`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.spacefast.com/v1/auth/oauth2/authorize`, token URL `https://api.spacefast.com/v1/auth/oauth2/token`; client credentials, token URL `https://api.spacefast.com/v1/auth/oauth2/token`, scopes: `spaces:write`)

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.

## Path parameters

- `teamId` string, required

## Request body

- object
  - `operationId` string, required
  - `filename` string, required
  - `contentType` 'image/png' | 'image/jpeg' | 'image/webp' | 'image/svg+xml' | 'application/pdf' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | 'application/vnd.ms-powerpoint' | 'application/vnd.openxmlformats-officedocument.presentationml.presentation' | 'font/woff' | 'font/woff2' | 'font/ttf' | 'font/otf' | 'application/vnd.ms-fontobject' | 'application/json' | 'text/markdown' | 'text/plain' | 'text/css' | 'text/html' | 'text/javascript' | 'application/javascript' | 'application/typescript' | 'application/yaml' | 'application/zip', 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

## Response `200`

Response for status 200

- object
  - `$schema` string, uri: Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.
  - `data` object, required
    - `attachmentId` integer, required
    - `filename` string, required
    - `contentType` string, required
    - `size` integer, required

## Other responses

- `default`: Problem details (RFC 9457). Any 4xx/5xx response is one `application/problem+json` document.

---

[API](https://skmtc.dev/spacefast/apis/spacefast-api.md) · [All operations](https://skmtc.dev/spacefast/apis/spacefast-api/llms.txt) · [OpenAPI document](https://skmtc.dev/spacefast/apis/spacefast-api/revisions/bd165bc7c983?raw)
