---
title: "Create the page for a tag, or add a revision to it"
method: PUT
path: "/experience-pages/{tag}"
tags: ["Experience Wiki"]
---

# Create the page for a tag, or add a revision to it

`PUT /experience-pages/{tag}`

## Request

- Base URL: `https://whatareyoudo.ing/api/v1`
- URL: `https://whatareyoudo.ing/api/v1/experience-pages/{tag}`
- Auth: HTTP bearer

Upsert: the client PUTs the whole body, with no separate create and edit calls.

Images (#1667): upload through `POST /uploads` with `groupId` set to the page's group (the detail's `groupId`; Public Square's for the public wiki), PUT the bytes to the returned URL, then `POST /uploads/{mediaId}/complete` -- the same route, and so the same size, type and quota limits, as diary entries. Reference an image inline as `![alt](media:<mediaAssetId>)`, and/or send it as `coverMediaAssetId`. Every referenced id must be an available image in the page's own group, at most 50 inline images, else 422. A write with `branchId` may not set the cover.

## Path parameters

- `tag` string, required

## Request body

- PutExperiencePageRequest
  - `body` string, required
  - `message` string
  - `branchId` string, uuid, nullable
  - `coverMediaAssetId` string, uuid, nullable

## Response `200`

OK

- object
  - `data` ExperiencePageDetail, required
    - `id` string, uuid, required
    - `tagSlug` string, required
    - `tagLabel` string, required
    - `groupId` string, uuid, required
    - `isPublished` boolean, required
    - `body` string, required
    - `format` 'markdown', required
    - `media` ExperiencePageMedia[], required
      - `id` string, uuid, required
      - `url` string, required
      - `mimeType` string, nullable, required
      - `altText` string, nullable, required
    - `coverMediaAssetId` string, uuid, nullable, required
    - `coverUrl` string, nullable, required
    - `revisionId` string, uuid, required
    - `revisionMessage` string, nullable, required
    - `revisionCount` integer, required
    - `sourceCount` integer, required
    - `viewCount` integer, required
    - `watcherCount` integer, required
    - `watching` boolean, nullable, required
    - `isLocked` boolean, required
    - `owner` object, nullable, required
      - `id` string, uuid, required
      - `username` string, nullable, required
      - `displayName` string, nullable, required
      - `avatarUrl` string, nullable, required
    - `editPolicy` 'anyone' | 'group_members' | 'owner_only', required
    - `canAdminister` boolean, nullable, required
    - `isHidden` boolean, required
    - `parent` ExperiencePageRef, nullable, required
      - `tagSlug` string, required
      - `tagLabel` string, required
    - `ancestors` ExperiencePageRef[], required
      - `tagSlug` string, required
      - `tagLabel` string, required
    - `childCount` integer, required
    - `lastEditedBy` DiaryMember, required
      - `id` string, uuid, required
      - `username` string, nullable, required
      - `displayName` string, nullable, required
      - `avatarUrl` string, nullable, required
    - `lastEditedAt` string, required
    - `createdAt` string, required
    - `updatedAt` string, required
  - `meta` object, required
    - `requestId` string, required

## Other responses

- `423`: The page is locked

---

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