Change requests API
6 operations. Authentication, errors and pagination work as described in the REST API overview.
List change requests on a prompt
GET/api/v1/prompts/{owner}/{slug}/change-requestsToken optional
Newest first; status defaults to open. cursor is the last number of the previous page. counts has the totals per status.
| Name | Type | Description |
|---|---|---|
owner pathrequired | string | |
slug pathrequired | string | |
status query | "open" | "merged" | "closed" | "all" | Default open |
cursor query | integer (…–9007199254740991) | The last number of the previous page |
limit query | integer (1–100) |
Responses: 200 OK304, 400, 404, 429
Response fields
| Name | Type | Description |
|---|---|---|
itemsrequired | object[] | |
nextCursorrequired | number | null | |
countsrequired | object |
curl 'https://incantory.ai/api/v1/prompts/{owner}/{slug}/change-requests' \
-H "Authorization: Bearer $INCANTORY_TOKEN"Propose a version of your fork to this prompt
POST/api/v1/prompts/{owner}/{slug}/change-requestsToken required · scope write
from must be a direct fork of this prompt that you own. One open request per fork (409 already_open); 409 no_changes when identical to the latest version; 403 blocked when the owner blocked you. Notifies the owner and all-level watchers.
| Name | Type | Description |
|---|---|---|
owner pathrequired | string | |
slug pathrequired | string |
Request body
| Name | Type | Description |
|---|---|---|
fromrequired | string | Your fork, as owner/slug (optionally @vN) |
version | integer (…–9007199254740991) | Version of the fork to propose; default its latest |
titlerequired | string | |
body | string | Markdown description |
Responses: 201 OK400, 401, 403, 404, 409, 410, 422, 429
Response fields
| Name | Type | Description |
|---|---|---|
idrequired | string | |
numberrequired | number | |
titlerequired | string | |
bodyrequired | string | |
statusrequired | "open" | "merged" | "closed" | |
targetrequired | string | |
authorrequired | object | null | |
sourcerequired | object | |
mergedVersionrequired | number | null | |
mergedByrequired | string | null | |
mergedAtrequired | string | null | |
closedByrequired | string | null | |
closedAtrequired | string | null | |
commentsLockedrequired | boolean | |
createdAtrequired | string | |
updatedAtrequired | string |
curl -X POST 'https://incantory.ai/api/v1/prompts/{owner}/{slug}/change-requests' \
-H "Authorization: Bearer $INCANTORY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"from":"from","title":"title"}'Get a change request (with what the caller may do)
GET/api/v1/prompts/{owner}/{slug}/change-requests/{n}Token optional
| Name | Type | Description |
|---|---|---|
owner pathrequired | string | |
slug pathrequired | string | |
n pathrequired | integer (…–1000000000) | Change request number |
Responses: 200 OK400, 404, 429
Response fields
| Name | Type | Description |
|---|---|---|
idrequired | string | |
numberrequired | number | |
titlerequired | string | |
bodyrequired | string | |
statusrequired | "open" | "merged" | "closed" | |
targetrequired | string | |
authorrequired | object | null | |
sourcerequired | object | |
mergedVersionrequired | number | null | |
mergedByrequired | string | null | |
mergedAtrequired | string | null | |
closedByrequired | string | null | |
closedAtrequired | string | null | |
commentsLockedrequired | boolean | |
createdAtrequired | string | |
updatedAtrequired | string | |
viewerrequired | object |
curl 'https://incantory.ai/api/v1/prompts/{owner}/{slug}/change-requests/{n}' \
-H "Authorization: Bearer $INCANTORY_TOKEN"Edit, close or reopen a change request
PATCH/api/v1/prompts/{owner}/{slug}/change-requests/{n}Token required · scope write
title/body/sourceVersion: the author, while open. status "closed": the author or the target owner. status "open": reopen a closed (not merged) request.
| Name | Type | Description |
|---|---|---|
owner pathrequired | string | |
slug pathrequired | string | |
n pathrequired | integer (…–1000000000) | Change request number |
Request body
| Name | Type | Description |
|---|---|---|
title | string | |
body | string | |
sourceVersion | integer (…–9007199254740991) | Move the request to another version of the same fork |
status | "open" | "closed" | closed = close; open = reopen a closed request |
Responses: 200 OK400, 401, 403, 404, 409, 429
Response fields
| Name | Type | Description |
|---|---|---|
idrequired | string | |
numberrequired | number | |
titlerequired | string | |
bodyrequired | string | |
statusrequired | "open" | "merged" | "closed" | |
targetrequired | string | |
authorrequired | object | null | |
sourcerequired | object | |
mergedVersionrequired | number | null | |
mergedByrequired | string | null | |
mergedAtrequired | string | null | |
closedByrequired | string | null | |
closedAtrequired | string | null | |
commentsLockedrequired | boolean | |
createdAtrequired | string | |
updatedAtrequired | string |
curl -X PATCH 'https://incantory.ai/api/v1/prompts/{owner}/{slug}/change-requests/{n}' \
-H "Authorization: Bearer $INCANTORY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'The diff a change request proposes
GET/api/v1/prompts/{owner}/{slug}/change-requests/{n}/diffToken optional
Open/closed: the target's latest version → the proposed version. Merged: the version before the merge → the merged version. Same file-level shape as GET …/diff/{a}..{b}.
| Name | Type | Description |
|---|---|---|
owner pathrequired | string | |
slug pathrequired | string | |
n pathrequired | integer (…–1000000000) | Change request number |
Responses: 200 OK400, 404, 429
Response fields
| Name | Type | Description |
|---|---|---|
baserequired | number | null | |
diffrequired | object |
curl 'https://incantory.ai/api/v1/prompts/{owner}/{slug}/change-requests/{n}/diff' \
-H "Authorization: Bearer $INCANTORY_TOKEN"Merge a change request (target owner)
POST/api/v1/prompts/{owner}/{slug}/change-requests/{n}/mergeToken required · scope write
Creates a new version on the target authored by the merger with the request author as co-author (coAuthorIds), parented on the proposed version, and marks the request merged in the same transaction.
| Name | Type | Description |
|---|---|---|
owner pathrequired | string | |
slug pathrequired | string | |
n pathrequired | integer (…–1000000000) | Change request number |
Request body (optional)
| Name | Type | Description |
|---|---|---|
message | string | Extra text appended to the merge commit message |
Responses: 200 OK400, 401, 403, 404, 409, 410, 429
Response fields
| Name | Type | Description |
|---|---|---|
idrequired | string | |
numberrequired | number | |
titlerequired | string | |
bodyrequired | string | |
statusrequired | "open" | "merged" | "closed" | |
targetrequired | string | |
authorrequired | object | null | |
sourcerequired | object | |
mergedVersionrequired | number | null | |
mergedByrequired | string | null | |
mergedAtrequired | string | null | |
closedByrequired | string | null | |
closedAtrequired | string | null | |
commentsLockedrequired | boolean | |
createdAtrequired | string | |
updatedAtrequired | string |
curl -X POST 'https://incantory.ai/api/v1/prompts/{owner}/{slug}/change-requests/{n}/merge' \
-H "Authorization: Bearer $INCANTORY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'