Skip to main content
Advertek Agent
DEVELOPER PLATFORM

Connect software to production.

Explore Agent Rail through MCP and REST. Start with the catalog, validate a production specification, request a quote, and follow the supported order workflow.

Quick start

  1. Call GET /api/catalog to see available product lines and POD categories.
  2. Build a spec and call POST /api/quotes for a deterministic quote.
  3. When ready, call POST /api/orders to mint a payable order.
  4. Poll GET /api/orders/ord_... or register a webhook for status events.
DEMOUnauthenticated endpoints use demo pricing unless production credentials are configured.

Authentication

Authenticated routes require an API key in the Authorization header. Contact Advertek to request a pilot key.

Never expose an API key in browser code. Use it from a server or trusted agent process.

Base URLs and versioning

Production: https://www.advertek.io

API paths are versioned by prefix. The current public surface is under /api.

Backward-compatible changes are additive. Breaking changes will be announced with a migration window.

Endpoint overview

MethodPathAuthStatusEffect
GET/api/catalogNonePILOTReturns product lines and POD categories.
POST/api/quotesAPI keyPILOTReturns a priced, time-bound quote.
POST/api/ordersAPI keyPILOTMints a payable order request.
GET/api/orders/[id]API keyPILOTReturns order and status timeline.
POST/api/orders/[id]/moonpayAPI keyPILOTSigned MoonPay Buy link for US card buyers; 403 with a reason when ineligible.
POST/api/mcpAPI keyPILOTMCP-over-HTTP tool transport.
POST/api/chatNone (rate-limited)DEMOConversational demo; does not create orders.
POST/api/artworkNone (rate-limited)PILOTVercel Blob upload token exchange for chat artwork.
POST/api/webhooks/advertekBasic + HTTPSPILOTInbound production status events.
POST/api/webhooks/quicknodeSignaturePLANNEDUSDC confirmation stream.
POST/api/webhooks/moonpaySignaturePILOTMoonPay delivery trigger; the transfer is re-verified on-chain.

MCP connection

Agent Rail is an MCP server over HTTP. Your agent calls the same tools the REST API exposes, but through the Model Context Protocol.

mcp_config.jsonJSON
{
  "mcpServers": {
    "advertek": {
      "url": "https://www.advertek.io/api/mcp",
      "headers": {
        "Authorization": "Bearer ADVERTEK_API_KEY"
      }
    }
  }
}

Quote example

RequestHTTP
POST /api/quotes HTTP/1.1
Host: www.advertek.io
Authorization: Bearer ADVERTEK_API_KEY
Content-Type: application/json

{
  "specification": {
    "productLine": "printOnDemand",
    "dimensions": { "width": 10, "height": 8, "units": "in" },
    "stock": { "weight": "200gsm", "color": "white" },
    "finish": ["none"],
    "quantity": 25,
    "turnaround": "standard",
    "assets": { "front": { "url": "https://cdn.example.com/front.pdf" } }
  }
}
ResponseJSON
HTTP/1.1 200 OK
Content-Type: application/json

{
  "ok": true,
  "quote": {
    "id": "qt_4d2a...",
    "total": {
      "currency": "USDC",
      "amountBaseUnits": "187500000"
    },
    "expiresAt": "2026-11-01T21:41:31Z",
    "demoPricing": true
  }
}

Non-binding demo

The response above shows demo pricing. Real quotes require a production pricing and spot-rate configuration.

Order and settlement

POST /api/orders validates the full order, prices each line, and returns payment instructions. The agent supplies the payer wallet; the rail supplies the order id, memo, and amount. No funds move until the wallet authorizes the transfer.

For a US buyer paying by card, call POST /api/orders/[id]/moonpaywith the buyer's country or IP address. The response is a signed MoonPay Buy link that delivers the invoice's exact USDC to the settlement wallet, so the order settles on the same rail. You never supply an amount. Buyers outside the allowed countries receive a 403 with a machine-readable reason so your agent can offer another rail. Canada is not served.

Order responseJSON
HTTP/1.1 201 Created
Content-Type: application/json

{
  "ok": true,
  "orderId": "ord_9f3e...",
  "memo": "ord_9f3e...",
  "settlementWallet": "G...",
  "amountBaseUnits": "187500000",
  "usdcMint": "EPjFWdd5A..."
}

Status and webhooks

Orders move through a normalized status vocabulary. You can poll or register a callback URL to receive signed webhooks.

"pending-payment" | "paid" | "downloaded" | "printing" | "printed" | "shipped" | "completed" | "held" | "cancelled" | "failed"

Webhook bodies are signed and include the order id so you can correlate events without parsing memo fields.

Error model

Errors follow a consistent shape with a machine-readable code, human message, and optional field-level issues.

validation: spec does not match the schema
unavailable: production pricing or spot-rate not configured
pricing_failure: upstream pricing could not be fetched
unsupported_product: product line not yet available
payment_mismatch: amount does not match the quote
production_exception: job rejected or requires human review

Rate limits and sandbox

Public endpoints are rate-limited per IP. Authenticated endpoints use key-based limits. Limits are returned in RateLimit-* headers where applicable.

The demo environment returns mocked figures and does not create production orders or move funds. A separate sandbox is available for controlled pilot integrations.

Changelog and support

Last updated: . For access, questions, or integration support, use the form below.

Request Credentials