---
title: "Change the plan"
method: PATCH
path: "/apps/{id}/plan"
tags: ["Plan"]
---

# Change the plan

`PATCH /apps/{id}/plan`

## Request

- Base URL: `https://pagefully.com/api/v1`
- URL: `https://pagefully.com/api/v1/apps/{id}/plan`
- Auth: HTTP bearer

Applied in this order: add, update, approve, remove, reorder. It stops at the first change the product refuses and says which; the changes before it are saved.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `locale` string: A language of the app. The app's own when left out.
  - `add` object[]
    - `name` string, required: 60 characters at most.
    - `kind` 'problem' | 'feature' | 'competitor' | 'channel', required
    - `message` string: What the page says. 160 characters at most.
    - `keywords` string[]: Keywords from the app's keyword field for the page to claim.
    - `targets` string[]: What a page with no keyword from the field is written for. Up to 12.
  - `update` object[]
    - `id` string, uuid, required
    - `name` string
    - `message` string
    - `on` boolean: false switches the intent off: it stays in the plan and no page is made for it.
  - `approve` string[]: Intents to switch on: a page is wanted for each.
  - `remove` string[]: Intents to take out of the plan. One with a page built is switched off with update.
  - `reorder` string[]: Intent ids in their new order, which is build priority.

## Response `200`

The plan after the changes.

- object
  - `locale` string, required
  - `applied` integer, required
  - `added` string[], required: Ids of the intents added.
  - `intents` Intent[], required
    - `id` string, uuid, required
    - `name` string, required
    - `kind` string, required: problem, feature, competitor or channel.
    - `message` string, required: What the page says to the person searching: why it is in the plan.
    - `on` boolean, required: A page is wanted for it.
    - `keywords` object[], required: Keywords from the app's keyword field that the page claims.
      - `keyword` string, required
      - `fit` number, nullable, required: How well it belongs on this page, 0 to 1. Null when a person placed it.
    - `targets` string[], required: What a page with no keyword from the field is written for.
    - `volume_estimate` number, required
    - `source` string, required: generated or user.
    - `position` integer, required: Lower is built first.
    - `page_id` string, uuid, nullable, required: Its page, once one is made.

## Other responses

- `400`: The request could not be read: a body that is not a JSON object, or a field missing or of the wrong kind.
- `401`: No token, or one that is not valid or has been revoked.
- `403`: The token's scope does not allow this call.
- `404`: Not found on this workspace.
- `422`: Understood, and refused by the product. The message says why, in a sentence that can be shown as it is.
- `429`: Too many calls: 120 requests a minute for a token, and 20 generation starts an hour. `retry_after` is seconds.

---

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