---
title: "Crea un documento del workspace: markdown (\"doc\"), una GRILLA de columnas y filas (\"grid\") o una PRESENTACIÓN (\"slides\")"
method: POST
path: "/api/v1/create_workspace_file"
tags: ["Spaces"]
---

# Crea un documento del workspace: markdown ("doc"), una GRILLA de columnas y filas ("grid") o una PRESENTACIÓN ("slides")

`POST /api/v1/create_workspace_file`

## Request

- Base URL: `https://api.pymaia.com`
- URL: `https://api.pymaia.com/api/v1/create_workspace_file`
- Auth: HTTP bearer

Crea un documento del workspace: markdown ("doc"), una GRILLA de columnas y filas ("grid") o una PRESENTACIÓN ("slides"). Para una tabla lo más simple es mandar `table` con headers y rows: el server arma la grilla y genera los ids. Devuelve el link para abrirlo en Pymaia. Cuándo NO usarla: para leer o listar lo que ya existe (list_workspace_files / get_workspace_file), para editar uno existente (update_workspace_file — esta crea uno nuevo cada vez), ni para subir una imagen o un video: eso son assets de la app, no documentos.

## Request body

- object
  - `name` string, required
  - `category` 'brand' | 'research' | 'strategy' | 'report' | 'other', required
  - `doc_type` 'doc' | 'grid' | 'slides': doc = markdown · grid = grilla · slides = presentación
  - `content` string: Markdown. Sólo para doc_type "doc".
  - `table` object: Atajo para "grid": headers + rows. El server genera los ids.
    - `headers` string[], required
    - `rows` array[], required
      - string[]
  - `content_json` union: Contenido estructurado de grid o slides, si querés controlar los ids.
    - object
      - `columns` object[], required
        - `id` string, required
        - `name` string, required
        - `type` 'text' | 'url' | 'dropdown' | 'file' | 'metric' | 'brand_voice' | 'audience' | 'agent' | 'prompt'
        - `options` string[]
      - `rows` object[], required
        - `id` string, required
        - `cells` object, required
      - `viewMode` 'condensed' | 'expanded'
    - object
      - `theme` 'pymaia' | 'helena' | 'minimal' | 'brand'
      - `slides` object[], required
        - `id` string, required
        - `type` string, required: Tipo de slide: 'title', 'content', 'bullets', 'image', 'chart'…
        - `layoutId` string: Layout: 'cover', 'bullet-list', 'two-columns', 'metric'…
        - `data` object: Campos del layout: title, subtitle, items, body…
  - `is_pinned` boolean

## Response `200`

Tool executed successfully

- object
  - `ok` boolean
  - `result` unknown
  - `duration_ms` number

## Other responses

- `400`: Invalid params or handler error
- `401`: Missing or invalid Bearer token
- `403`: Missing required scope(s) (`denied_scope`), or the tool's module is disabled for the organization (`module_disabled`, with `why`, `fix` and `module`)
- `404`: Tool not found, internal-only, or excluded for OAuth connectors
- `429`: Rate limit exceeded

---

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