WritersLogic Verifiable AI Agent Hub Print Box API
The Print Box API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for print box.
The Print Box API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for print box.
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/writerslogic-com:writerslogic-com-print-box-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: WritersLogic Verifiable AI Agent Hub Print Box API
version: 2.0.0
description: Pay-per-call agents settled in USDC on Base via x402. Every response carries a signed provenance envelope.
contact:
name: WritersLogic
url: https://writerslogic.com/agents
email: agents@writerslogic.com
servers:
- url: https://agents.writerslogic.com
tags:
- name: Print Box
paths:
/api/v1/print-box:
post:
operationId: print_box
summary: 'PDF page box check: trim, bleed and safe area from supplied boxes'
description: 'Checks the five PDF page boxes you supply (MediaBox, CropBox, BleedBox, TrimBox, ArtBox, in points) for a print job: applies the ISO 32000-1 defaults and media-box clipping, measures bleed on each side of the trim box, and tests the content box against a safe margin inside the trim, for agents that prepare or accept print-ready PDFs. It does not read a PDF file, check fonts, colour, image resolution or marks, or know a printer''s own requirements; you supply the minimum bleed and safe margin. A missing TrimBox gives `unknown` for bleed and safe-area questions because the finished size is then not declared.
Price: 0.005 USDC on Base (x402).'
x-x402-price-usdc: '0.005'
x-x402-amount: '5000'
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.005'
x-audience: developer
x-sample-url: https://agents.writerslogic.com/api/v1/samples/print-box
security:
- x402: []
- apiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- pageBoxes
properties:
pageBoxes:
type: object
description: mediaBox is required; the others are optional and default per ISO 32000-1 (cropBox to mediaBox; bleedBox, trimBox, artBox to cropBox).
required:
- mediaBox
additionalProperties: false
properties:
mediaBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
cropBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
bleedBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
trimBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
artBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
userUnit:
type: number
minimum: 0.0001
maximum: 1000
description: 'The page''s UserUnit (default 1): the size of one user space unit in 1/72 inch.'
requirements:
type: object
additionalProperties: false
properties:
unit:
type: string
enum:
- pt
- mm
- in
description: Unit of minBleed and safeMargin; default mm. pt means points (1/72 inch) of user space after UserUnit.
minBleed:
type: number
minimum: 0
maximum: 1000
description: Smallest allowed distance from trim to bleed box on every side.
safeMargin:
type: number
minimum: 0
maximum: 1000
description: Smallest allowed distance from trim to live content on every side.
tolerancePt:
type: number
minimum: 0
maximum: 1
description: Slack in points before a shortfall counts (default 0.01) so 3 mm written as 8.5 pt is not a failure.
contentBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: Bounding box of the live content, same coordinates as the page boxes. If absent the ArtBox (when supplied) is used.
example:
pageBoxes:
mediaBox:
- 0
- 0
- 612
- 792
trimBox:
- 9
- 9
- 603
- 783
bleedBox:
- 0
- 0
- 612
- 792
artBox:
- 36
- 36
- 576
- 756
requirements:
unit: mm
minBleed: 3
safeMargin: 5
responses:
'200':
description: Paid result with provenance
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
status:
type: string
enum:
- pass
- fail
- unknown
- unsupported
description: 'pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass.'
effective:
type: object
description: Each box after defaults and clipping to the media box, as [llx, lly, urx, ury] in points x UserUnit.
properties:
mediaBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
cropBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
bleedBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
trimBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
artBox:
type: array
minItems: 4
maxItems: 4
items:
type: number
minimum: -10000000
maximum: 10000000
description: '[x1 y1 x2 y2] in default user space units; any two diagonal corners.'
defaulted:
type: array
items:
type: string
description: Boxes that were absent and took their default.
trimSize:
type: object
properties:
widthPt:
type: number
heightPt:
type: number
widthMm:
type: number
heightMm:
type: number
widthIn:
type: number
heightIn:
type: number
bleed:
type: object
description: Trim-to-bleed distance per side in points; negative means the bleed box is inside the trim box.
properties:
leftPt:
type: number
bottomPt:
type: number
rightPt:
type: number
topPt:
type: number
minMm:
type: number
safe:
type: object
description: 'Trim-to-content distance per side in points (negative: content outside trim).'
properties:
leftPt:
type: number
bottomPt:
type: number
rightPt:
type: number
topPt:
type: number
minMm:
type: number
contentFrom:
type: string
witnesses:
type: array
items:
type: object
properties:
ruleId:
type: string
detail:
type: string
path:
type: string
description: JSON pointer or dotted path into the input.
offset:
type: integer
index:
type: integer
expected:
description: What the rule required.
actual:
description: What the input had.
versions:
type: object
description: Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile).
limits:
type: array
items:
type: string
deterministic:
type: boolean
description: 'Always true: pure code, no model.'
_provenance:
type: object
description: C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance
required:
- data
- _provenance
'400':
description: Invalid request (no payment consumed)
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
'401':
description: Invalid X-API-KEY
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
'402':
description: Payment required or invalid
content:
application/json:
schema:
type: object
description: x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)
properties:
x402Version:
type: integer
error:
type: string
code:
type: string
resource:
type: object
accepts:
type: array
items:
type: object
extensions:
type: object
'502':
description: Upstream failure; the payment is released or not settled
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
tags:
- Print Box
components:
securitySchemes:
x402:
type: apiKey
in: header
name: PAYMENT-SIGNATURE
description: x402 v2 payment payload (base64) sent after a 402 challenge
apiKey:
type: apiKey
in: header
name: X-API-KEY