ColoringBookify Pages API
The Pages API from ColoringBookify — 8 operation(s) for pages.
Operations 13
PUT
/api/v1/pages/{id}/image
Replace a page image with a finished image created outside ColoringBookify
#
The Pages API from ColoringBookify — 8 operation(s) for pages.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/coloringbookify-com:coloringbookify-com-pages-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Coloringbookify Com Pages API
version: 1.1.0
description: 'Operations tagged Pages across 2 of this provider''s published API definitions: coloringbookify-com-openapi.yml, coloringbookify-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://coloringbookify.com
security:
- bearerApiKey: []
tags:
- name: Pages
paths:
/api/v1/books/{book_id}/pages:
post:
tags:
- Pages
operationId: addBookPage
summary: Generate a new book page or attach an existing ready page
description: New generation requires Idempotency-Key and one credit. Attaching existing_page_id is synchronous and free.
x-credit-cost: 0 when attaching an existing page; 1 when generating a page.
parameters:
- $ref: '#/components/parameters/BookId'
- $ref: '#/components/parameters/OptionalIdempotencyKey'
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ExistingPageInput'
- $ref: '#/components/schemas/PageCreateInput'
multipart/form-data:
schema:
$ref: '#/components/schemas/PageCreateInput'
responses:
'201':
description: Existing page attached
content:
application/json:
schema:
$ref: '#/components/schemas/PageEnvelope'
'202':
$ref: '#/components/responses/PageMutationAccepted'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/ValidationFailed'
servers:
- url: https://coloringbookify.com
/api/v1/books/{book_id}/pages/{id}:
delete:
tags:
- Pages
operationId: detachBookPage
summary: Detach a page from a book without deleting it
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/BookId'
- $ref: '#/components/parameters/ResourceId'
responses:
'204':
description: Page detached
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
servers:
- url: https://coloringbookify.com
/api/v1/books/{id}/pages/order:
patch:
tags:
- Pages
operationId: reorderBookPages
summary: Replace the page order for a book
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PageOrderInput'
responses:
'200':
description: Ordered pages
content:
application/json:
schema:
$ref: '#/components/schemas/PageListDataEnvelope'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
servers:
- url: https://coloringbookify.com
/api/v1/pages:
get:
tags:
- Pages
operationId: listPages
summary: List pages owned by the account
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/After'
responses:
'200':
description: A page of pages
content:
application/json:
schema:
$ref: '#/components/schemas/PageListEnvelope'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
post:
tags:
- Pages
operationId: createPage
summary: Create and asynchronously generate a standalone page
description: Generation consumes one credit.
x-credit-cost: 1
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PageCreateInput'
multipart/form-data:
schema:
$ref: '#/components/schemas/PageCreateInput'
responses:
'202':
$ref: '#/components/responses/PageMutationAccepted'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/ValidationFailed'
servers:
- url: https://coloringbookify.com
/api/v1/pages/import:
post:
tags:
- Pages
operationId: importFinishedPage
summary: Import a finished page created outside ColoringBookify
description: Creates a ready standalone page without AI generation. JPEG, PNG, and WebP uploads are normalized to PNG and padded with white, without cropping, when a small aspect adjustment is needed.
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/FinishedPageImportInput'
responses:
'201':
description: Imported ready page
content:
application/json:
schema:
$ref: '#/components/schemas/PageEnvelope'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/ValidationFailed'
servers:
- url: https://coloringbookify.com
/api/v1/pages/{id}:
get:
tags:
- Pages
operationId: getPage
summary: Get an owned page
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Page details
content:
application/json:
schema:
$ref: '#/components/schemas/PageEnvelope'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- Pages
operationId: updatePage
summary: Update page metadata or reusable characters
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PageUpdateInput'
responses:
'200':
description: Updated page
content:
application/json:
schema:
$ref: '#/components/schemas/PageEnvelope'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
put:
tags:
- Pages
operationId: replacePageMutableFields
summary: Update page metadata or reusable characters
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PageUpdateInput'
responses:
'200':
description: Updated page
content:
application/json:
schema:
$ref: '#/components/schemas/PageEnvelope'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
delete:
tags:
- Pages
operationId: deletePage
summary: Delete an owned page
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'204':
description: Page deleted
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
servers:
- url: https://coloringbookify.com
/api/v1/pages/{id}/image:
get:
tags:
- Pages
operationId: getPageImage
summary: Download an owned page's generated image
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/ResourceId'
- name: download
in: query
description: Return Content-Disposition attachment when true.
schema:
type: boolean
default: false
responses:
'200':
description: Generated image bytes.
content:
image/png:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
image/svg+xml:
schema:
type: string
format: binary
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- Pages
operationId: replacePageImage
summary: Replace a page image with a finished image created outside ColoringBookify
description: Marks the page ready, clears its prior safe error, and does not call an AI provider. The same normalization rules as page import apply.
x-credit-cost: 0
parameters:
- $ref: '#/components/parameters/ResourceId'
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/FinishedPageReplacementInput'
responses:
'200':
description: Updated ready page
content:
application/json:
schema:
$ref: '#/components/schemas/PageEnvelope'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/ValidationFailed'
servers:
- url: https://coloringbookify.com
/api/v1/pages/{id}/regenerate:
post:
tags:
- Pages
operationId: regeneratePage
summary: Asynchronously regenerate an owned page
description: Regeneration consumes one credit.
x-credit-cost: 1
parameters:
- $ref: '#/components/parameters/ResourceId'
- $ref: '#/components/parameters/IdempotencyKey'
responses:
'202':
$ref: '#/components/responses/PageMutationAccepted'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
'403':
$ref: '#/components/responses/BusinessPlanRequired'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/ValidationFailed'
servers:
- url: https://coloringbookify.com
components:
parameters:
After:
name: after
in: query
description: Opaque next_cursor from a previous response.
schema:
type: string
BookId:
name: book_id
in: path
required: true
description: Opaque book identifier.
schema:
type: string
IdempotencyKey:
name: Idempotency-Key
in: header
required: true
description: Unique key for safely retrying this request.
schema:
type: string
minLength: 8
maxLength: 255
ResourceId:
name: id
in: path
required: true
description: Opaque resource identifier.
schema:
type: string
Limit:
name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 25
OptionalIdempotencyKey:
name: Idempotency-Key
in: header
required: false
description: Required for new page generation; unused when attaching an existing page.
schema:
type: string
minLength: 8
maxLength: 255
schemas:
Page:
type: object
properties:
id:
type: string
title:
type: string
description:
type:
- string
- 'null'
status:
type: string
kind:
type: string
aspect:
type: string
level:
type: string
privacy:
type: string
outline_weight:
type: string
character_ids:
type: array
items:
type: string
book_ids:
type: array
items:
type: string
image_format:
type: string
book_index:
type:
- integer
- 'null'
error:
type: string
const: Generation failed.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
links:
$ref: '#/components/schemas/Links'
PageOrderInput:
type: object
required:
- page_ids
properties:
page_ids:
type: array
uniqueItems: true
items:
type: string
PageListEnvelope:
allOf:
- $ref: '#/components/schemas/PaginatedEnvelope'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Page'
Operation:
type: object
properties:
id:
type: string
action:
type: string
enum:
- character.create
- character.regenerate
- book.create
- page.create
- page.regenerate
status:
type: string
enum:
- queued
- running
- succeeded
- partially_succeeded
- failed
credits:
type: object
properties:
charged:
type: integer
refunded:
type: integer
progress:
type: object
additionalProperties: true
resource:
type: object
properties:
type:
type: string
id:
type: string
link:
type: string
error:
type: object
properties:
code:
type: string
message:
type: string
created_at:
type: string
format: date-time
started_at:
type:
- string
- 'null'
format: date-time
finished_at:
type:
- string
- 'null'
format: date-time
links:
$ref: '#/components/schemas/Links'
PageEnvelope:
type: object
properties:
data:
$ref: '#/components/schemas/Page'
ErrorEnvelope:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
- request_id
properties:
code:
type: string
message:
type: string
request_id:
type: string
details:
type:
- array
- object
ExistingPageInput:
type: object
required:
- existing_page_id
properties:
existing_page_id:
type: string
PageUpdateInput:
type: object
properties:
page:
type: object
properties:
title:
type: string
description:
type: string
privacy:
type: string
character_ids:
type: array
items:
type: string
PageCreateInput:
type: object
required:
- page
properties:
page:
type: object
required:
- title
properties:
title:
type: string
description:
type: string
kind:
type: string
enum:
- coloring
- freeform
- dedication
- quote
- test_color
- belongs
aspect:
type: string
enum:
- square
- portrait
- landscape
level:
type: string
privacy:
type: string
border_type:
type: string
outline_weight:
type: string
input_image:
type: string
format: binary
character_ids:
type: array
items:
type: string
template_data:
type: object
additionalProperties: true
PageListDataEnvelope:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Page'
MutationEnvelope:
type: object
required:
- data
- resource
properties:
data:
$ref: '#/components/schemas/Operation'
resource:
type: object
FinishedPageReplacementInput:
type: object
required:
- page
properties:
page:
type: object
required:
- image
properties:
image:
type: string
format: binary
description: JPEG
PNG: null
or WebP; maximum 15 MB.: null
PaginatedEnvelope:
type: object
properties:
data:
type: array
meta:
type: object
properties:
limit:
type: integer
next_cursor:
type:
- string
- 'null'
has_more:
type: boolean
FinishedPageImportInput:
type: object
required:
- page
properties:
page:
type: object
required:
- title
- image
properties:
title:
type: string
description:
type: string
aspect:
type: string
enum:
- square
- portrait
- landscape
default: square
level:
type: string
enum:
- easy
- medium
- hard
default: easy
privacy:
type: string
enum:
- is_private
- is_public
default: is_private
border_type:
type: string
enum:
- dotted
- solid
outline_weight:
type: string
enum:
- fine
- standard
- bold
- extra_bold
default: standard
image:
type: string
format: binary
description: JPEG
PNG: null
or WebP; maximum 15 MB.: null
Links:
type: object
additionalProperties:
type: string
responses:
PageMutationAccepted:
description: Page generation accepted.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/MutationEnvelope'
- type: object
properties:
resource:
$ref: '#/components/schemas/Page'
NotFound:
description: Resource missing or inaccessible
headers:
X-ColoringBookify-Credits-Available:
$ref: '#/components/headers/CreditsAvailable'
X-ColoringBookify-Credits-Consumed:
$ref: '#/components/headers/CreditsConsumed'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
BusinessPlanRequired:
description: Active Business plan required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
Unauthorized:
description: Bearer API key missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
InsufficientCredits:
description: Not enough credits
headers:
X-ColoringBookify-Credits-Available:
$ref: '#/components/headers/CreditsAvailable'
X-ColoringBookify-Credits-Consumed:
$ref: '#/components/headers/CreditsConsumed'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
Conflict:
description: Idempotency
readiness: null
or generation conflict: null
headers:
X-ColoringBookify-Credits-Available:
$ref: '#/components/headers/CreditsAvailable'
X-ColoringBookify-Credits-Consumed:
$ref: '#/components/headers/CreditsConsumed'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
ValidationFailed:
description: Validation failed
headers:
X-ColoringBookify-Credits-Available:
$ref: '#/components/headers/CreditsAvailable'
X-ColoringBookify-Credits-Consumed:
$ref: '#/components/headers/CreditsConsumed'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
InvalidRequest:
description: Invalid request or idempotency key
headers:
X-ColoringBookify-Credits-Available:
$ref: '#/components/headers/CreditsAvailable'
X-ColoringBookify-Credits-Consumed:
$ref: '#/components/headers/CreditsConsumed'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
headers:
CreditsConsumed:
description: Credits consumed by this HTTP request. An idempotent replay returns 0 even though its operation body reports the original charge.
schema:
type: integer
minimum: 0
CreditsAvailable:
description: Account credits available after this HTTP request.
schema:
type: integer
minimum: 0
securitySchemes:
bearerApiKey:
type: http
scheme: bearer
bearerFormat: ColoringBookify API key
x-refined-from:
- coloringbookify-com-openapi.yml
- coloringbookify-com-openapi.yml