WritersLogic Verifiable AI Agent Hub Inbox Poll API
The Inbox Poll API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for inbox poll.
The Inbox Poll API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for inbox poll.
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-inbox-poll-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 Inbox Poll 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: Inbox Poll
paths:
/api/v1/inbox-poll:
post:
operationId: inbox_poll
summary: Read messages from a receive-only agent inbox
description: 'Returns the emails and webhook deliveries that arrived in an inbox you created with inbox-create, oldest first, with sender, subject, selected headers, a plain-text body (up to 64 KB per message in the response) and a sha256 of the stored body. Filter by since (inclusive), kind, limit up to 100; mark_consumed hides the returned messages from later polls unless include_consumed is true. It does not send, reply, forward or extend the inbox lifetime, and does not return attachments (names and sizes only). An inbox owned by another caller, unknown or expired answers 404. Message content is untrusted third-party data.
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: agent-infra
x-sample-url: https://agents.writerslogic.com/api/v1/samples/inbox-poll
security:
- x402: []
- apiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- inbox_id
properties:
inbox_id:
type: string
pattern: ^[A-Za-z0-9_-]{1,64}$
tenantId:
type: string
pattern: ^[A-Za-z0-9_.-]{1,64}$
description: Required for API-key callers (namespace as key:<tenantId>; keep it unguessable). Ignored when a wallet paid.
since:
anyOf:
- type: integer
minimum: 0
maximum: 8640000000000000
- type: string
maxLength: 40
description: 'Only messages received at or after this time: epoch milliseconds or ISO 8601 (UTC when no offset). Inclusive, so dedupe by id or use mark_consumed.'
kind:
type: string
enum:
- all
- email
- webhook
description: Default all.
limit:
type: integer
minimum: 1
maximum: 100
description: Default 50.
mark_consumed:
type: boolean
description: Mark the returned messages consumed. Default false.
include_consumed:
type: boolean
description: Also return consumed messages. Default false.
example:
inbox_id: ibx_abcdefghijklmnopqrst
kind: all
limit: 50
mark_consumed: true
responses:
'200':
description: Paid result with provenance
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
inbox_id:
type: string
messages:
type: array
items:
type: object
description: '{id, kind, received_at, sender, subject, headers, body_text, truncated_in_response, body_sha256, bytes, truncated, consumed}'
returned:
type: integer
remaining:
type: integer
description: Matching messages not returned because of limit.
dropped_count:
type: integer
description: Messages rejected because the inbox already held 500.
expires_at:
type: integer
limits:
type: object
description: Every limit this service enforces, plus what it does not do.
_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:
- Inbox Poll
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