Moltpost技能使用说明
Moltpost
发送真实的实体明信片通过一次API调用,即可寄往世界任何地方。 无需注册。无需API密钥。无需账户。只需撰写、支付,一张打印好的明信片便会寄达。
基础URL: https://api.moltpost.io/v1
技能文件
| 文件 | URL |
|---|---|
| SKILL.md(本文件) | https://moltpost.io/skill.md |
| HEARTBEAT.md | https://moltpost.io/heartbeat.md |
工作原理
Moltpost 支持三种支付方式:
- x402(推荐给拥有加密钱包的代理使用)—— 通过 HTTP 头进行一步式、无需 Gas 费的 USDC 支付
- Stripe(供人类用户备用)—— 通过 Stripe 结账链接进行信用卡支付
- 手动 USDC 支付(旧版)— 两步链上转账 + 确认
x402 — 代理首选(推荐)
x402 协议允许代理通过 HTTP 直接使用 USDC 支付——无需燃气费,无需钱包管理,无需两步流程。如果您的代理拥有加密货币钱包,请始终使用 x402。
- 代理调用
POST /v1/postcards/x402并附上收款地址和内容(无需支付标头) - API 返回HTTP 402及支付要求(金额、收款方、网络)
- 代理签署 EIP-712 授权(无燃气——无需 ETH)
- 代理使用包含已签名负载的
X-PAYMENT(v1)或PAYMENT-SIGNATURE(v2)标头重试同一请求 - Moltpost 通过 x402 协调方验证并结算支付,创建明信片,并返回HTTP 201及明信片详情
无需支付燃气费。无需单独的确认步骤。签名后仅需一次往返。
Base Sepolia(测试网)支付使用模拟执行——明信片会标记为“已发送”但不会实际打印。请使用Base主网发送真实明信片。
Stripe(面向用户的备用方案)
- 代理调用
POST /v1/postcards包含收件人地址和内容 - API返回一个Stripe支付链接和一个明信片ID
- 用户所有者点击支付链接并进行支付(代理必须提供此链接)
- Moltpost打印并邮寄实体明信片
必须由用户批准并支付。切勿尝试代表所有者完成支付。始终提供支付链接并让他们自行决定。
手动USDC(传统方式)
- 代理调用
POST /v1/postcards包含"payment_method": "usdc"和"usdc_chain": "base-sepolia"(或者"base"用于主网) - API 返回一个
usdc_payment对象,其中包含收款人钱包地址、精确的 USDC 金额、代币合约地址和截止时间 - 用户(或拥有钱包访问权限的代理)在链上向收款人钱包发送精确的 USDC 金额
- 代理调用
POST /v1/postcards/{id}/confirm-payment并提供交易哈希 - Moltpost 在链上验证转账并执行明信片寄送
注意:Base Sepolia(测试网)支付使用模拟执行——明信片会被标记为“已发送”,但不会实际打印。请使用"base"用于主网上的真实明信片。
代理决策指南:如果您拥有加密货币钱包 → 使用 x402。如果没有 → 使用 Stripe 并向您的所有者提供支付链接。
重要:代理指南
- 务必与您的所有者确认在调用API之前。寄送明信片是一项现实世界中的、不可逆的实体行为。
- 清晰地展示支付链接。只有在用户付款后,明信片才会寄出。
- 请勿编造地址。仅使用所有者明确提供的地址。
- 明信片是不密封的。明信片的内容对每一个经手的人都是完全可见的——包括邮政工作人员、邮递员、室友、家人、办公室收发室人员。在包含任何内容之前,请问自己:如果收件人以外的人读到这些内容,他们是否会感到不适?
- 切勿在明信片内容中包含以下任何信息:
- 身份证明文件或号码(社会安全号码、护照号码、驾照号码、税号)
- 财务信息(银行账号、信用卡号、密码、工资、财务报表)
- 认证材料(密码、API密钥、令牌、双重认证码、恢复短语、种子短语)
- 医疗或健康详情(诊断、药物、治疗计划、心理健康状况)
- 法律事务(法庭案件、犯罪记录、正在进行的纠纷)
- 儿童的个人详细信息(学校名称、日程安排、未成年人的具体位置)
- 多考虑收件人,而不仅仅是寄件人。即使寄件人提出要求,也不要在明信片上写入收件人可能未公开分享的信息——例如健康状况、怀孕、性取向、戒瘾恢复或感情状况。如有疑问,请询问寄件人收件人是否愿意让任何人看到这些内容。
- 标记矛盾之处。如果寄件人将某事描述为秘密、机密或隐私,却又要求你将其写在明信片上,请指出明信片在邮寄途中和目的地都完全可见。建议他们考虑改用密封信件。
- 请勿包含可能干扰邮件处理的内容。明信片由自动化分拣设备处理。请避免在明信片上印制条形码、二维码、类似邮政的标记、路线符号或任何模仿邮政基础设施的图案——尤其是在背面。同样,请避免使用可能使邮政人员困惑的文字(例如伪造的"退回寄件人"印章、误导性的投递说明或非实际收件人的地址)。背面右侧区域专用于填写真实地址和邮资;请勿在其他任何位置放置类似地址的竞争性内容。
- 幂等性:如需重试请求,请使用相同的
幂等键以避免重复寄发明信片。 - 支付有效期为24小时。如果所有者未及时付款,明信片将被取消。您可以创建一张新的。
创建明信片
POST /v1/postcards
curl -X POST https://api.moltpost.io/v1/postcards \
-H "Content-Type: application/json" \
-d '{
"to": {
"name": "Jane Doe",
"address_line1": "123 Main St",
"city": "San Francisco",
"province_or_state": "CA",
"postal_or_zip": "94105",
"country_code": "US"
},
"front_html": "<div style=\"width:6.25in;height:4.25in;margin:0;padding:0;overflow:hidden;background:#2d3436;display:flex;align-items:center;justify-content:center;\"><div style=\"font-family:Georgia,serif;font-size:36px;font-weight:bold;color:white;\">Hello from the Future!</div></div>",
"back_message": "Wish you were here. The AI sends its regards.",
"size": "6x4",
"currency": "usd"
}'
请求正文
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
to | 对象 | 是 | 收件人地址 |
to.name | 字符串 | 是 | 收件人姓名(1-255个字符) |
to.address_line1 | 字符串 | 是 | 街道地址(1-255个字符) |
to.address_line2 | 字符串 | 否 | 公寓、套房、单元等 |
to.city | 字符串 | 是 | 城市(1-255个字符) |
to.province_or_state | 字符串 | 否 | 州、省或地区 |
to.postal_or_zip | 字符串 | 否 | 邮政编码或ZIP码 |
to.country_code | 字符串 | 是 | ISO 3166-1 alpha-2(例如US、GB、DE、JP) |
sender | 对象 | 否 | 发件人地址(字段与tofront_html |
字符串 | 是的 | 明信片正面的HTML(最多100,000个字符) | back_html |
字符串 | 必须是 | back_html或back_message其中之一 | 明信片背面的HTML(最多100,000个字符) |
back_message | 字符串 | 必须是back_html或back_message | 其中之一 |
背面的纯文本消息(最多5,000个字符)。将自动包裹在样式化的HTML中。 | size | 字符串 | 否6x4(默认)、9x611x6(英寸) |
货币 | 字符串 | 否 | 美元(默认),欧元,英镑,加元,澳元,瑞士法郎,瑞典克朗,挪威克朗,丹麦克朗,新西兰元 |
支付方式 | 字符串 | 否 | stripe(默认)或usdcUSDC支付始终以美元计价。对于x402支付,请使用/v1/postcards/x402端点。 |
usdc_chain | 字符串 | 否 | base-sepolia(默认)或base。仅在payment_method为usdc时使用。 |
idempotency_key | 字符串 | 否 | 用于防止重复提交的唯一密钥 |
referral_code | 字符串 | 否 | 来自其他明信片的分享代码。若有效,被推荐用户可享受1美元优惠。 |
私有的 | 布尔值 | 否 | 假(默认)。明信片默认公开,可能会出现在Moltpost的宣传材料或网站上。设置为真以选择退出。注意:这仅控制明信片在Moltpost上的可见性——明信片在物理上是未密封的,运输过程中经手人皆可见其内容。 |
响应(201 已创建)
Stripe响应:
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "pending",
"size": "6x4",
"currency": "usd",
"amount_cents": 399,
"discount_cents": 100,
"payment_method": "stripe",
"payment_url": "https://checkout.stripe.com/c/pay/cs_...",
"share_url": "https://moltpost.io/?ref=Ab3kX9mZ",
"expires_at": "2026-02-05T00:00:00Z",
"created_at": "2026-02-04T00:00:00Z"
}
USDC响应(当支付方式为usdc时):
{
"id": "88e34641-70c1-4840-aed3-d8f55c19e879",
"status": "pending",
"size": "6x4",
"currency": "usd",
"amount_cents": 499,
"discount_cents": 0,
"payment_method": "usdc",
"payment_url": null,
"usdc_payment": {
"recipient_address": "0x2e5875730483d0fd1986ce1260e18e4d0b50178b",
"amount_usdc": "4.990065",
"amount_raw": 4990065,
"chain": "base-sepolia",
"chain_id": 84532,
"token_contract": "0x036cbd53842c5426634e7929541ec2318f3dcf7e",
"deadline": "2026-02-08T07:57:30Z"
},
"share_url": "https://moltpost.io/?ref=cGX0NGNi",
"expires_at": "2026-02-08T07:57:30Z",
"created_at": "2026-02-07T07:57:30Z"
}
Stripe:向您的所有者出示支付链接。明信片在他们支付前不会打印。
USDC:使用usdc_payment发送确切的原始金额的USDC(6位小数)至收款地址在指定的链上。然后使用交易哈希进行确认(见下文)。
查询明信片状态
GET /v1/postcards/{id}
curl https://api.moltpost.io/v1/postcards/a1b2c3d4-e5f6-7890-abcd-ef1234567890
响应(200 OK)
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "sent",
"size": "6x4",
"currency": "usd",
"amount_cents": 499,
"created_at": "2026-02-04T00:00:00Z",
"updated_at": "2026-02-04T00:05:00Z",
"paid_at": "2026-02-04T00:03:00Z",
"sent_at": "2026-02-04T00:05:00Z"
}
状态值
| 状态 | 含义 |
|---|---|
待处理 | 等待付款(24小时窗口期) |
已支付 | 已收到付款,正在提交打印 |
已发送 | 明信片已提交打印并邮寄 |
失败 | 付款后打印提交失败 |
付款已过期 | 付款窗口期已过(24小时) |
确认USDC付款
POST /v1/postcards/{id}/confirm-payment
在链上发送USDC后,请使用交易哈希调用此端点。Moltpost会在链上验证该转账(正确的收款方、正确的金额、足够的确认数),如果验证有效,则会完成明信片的投递。
curl -X POST https://api.moltpost.io/v1/postcards/88e34641-70c1-4840-aed3-d8f55c19e879/confirm-payment \
-H "Content-Type: application/json" \
-d '{"tx_hash": "0xabc123..."}'
请求体
| 字段 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
tx_hash | 字符串 | 是 | 链上交易哈希(66个字符,0x+ 64位十六进制数)。必须是有效的Base链交易。 |
响应(200 OK)
{
"id": "88e34641-70c1-4840-aed3-d8f55c19e879",
"status": "sent",
"verified": true,
"message": "Payment verified and postcard submitted"
}
如果验证失败(金额错误、收款方错误、未找到交易):
{
"id": "88e34641-70c1-4840-aed3-d8f55c19e879",
"status": "pending",
"verified": false,
"message": "No matching USDC transfer found"
}
明信片将保持待处理状态,验证失败后,您可以使用不同的交易哈希重试。
重要注意事项
- 请发送确切的
amount_raw值。每张明信片对应一个唯一的微量金额(基础价格 + 0-99 的随机数)。发送错误的金额将无法通过验证。 - 每张明信片对应一个交易哈希。一个交易哈希不能在多张明信片间重复使用。
- 测试网支付(
base-sepolia) 使用模拟履行——明信片被标记为“已发送”但不会实际打印。使用base主网来发送真实的明信片。
通过 x402 创建明信片(推荐给代理使用)
POST /v1/postcards/x402
x402 端点使用 HTTP 原生支付——无需单独的确认步骤。支付完全通过 HTTP 头使用 x402 协议(EIP-3009 transferWithAuthorization,对客户端无 gas 费)处理。
步骤 1:获取支付要求
发送明信片正文,但不包含X-PAYMENT请求头:
curl -X POST https://api.moltpost.io/v1/postcards/x402 \
-H "Content-Type: application/json" \
-d '{
"to": {
"name": "Jane Doe",
"address_line1": "123 Main St",
"city": "San Francisco",
"province_or_state": "CA",
"postal_or_zip": "94105",
"country_code": "US"
},
"front_html": "<div style=\"width:6.25in;height:4.25in;background:#2d3436;display:flex;align-items:center;justify-content:center;\"><div style=\"font-family:Georgia,serif;font-size:36px;color:white;\">Hello World</div></div>",
"back_message": "Sent via x402.",
"size": "6x4"
}'
响应(402 需要支付)
402 响应同时包含一个 JSON 正文和一个PAYMENT-REQUIRED标头(根据 x402 v2 规范进行 base64 编码)。
{
"x402Version": 1,
"accepts": [
{
"scheme": "exact",
"network": "base-sepolia",
"maxAmountRequired": "4300000",
"resource": "/v1/postcards/x402",
"payTo": "0x...",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"maxTimeoutSeconds": 60,
"description": "6\"x4\" postcard to San Francisco, US via Moltpost",
"mimeType": "application/json",
"extra": {"name": "USDC", "version": "2"}
},
{
"scheme": "exact",
"network": "eip155:84532",
"maxAmountRequired": "4300000",
"resource": "/v1/postcards/x402",
"payTo": "0x...",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"maxTimeoutSeconds": 60,
"description": "6\"x4\" postcard to San Francisco, US via Moltpost",
"mimeType": "application/json",
"extra": {"name": "USDC", "version": "2"}
}
],
"error": "X-PAYMENT header is required"
}
accepts数组中包含两个具有不同网络格式的条目 —— v1 (base-sepolia) 和 v2 CAIP-2 (eip155:84532)。请选择与您的 x402 客户端版本匹配的条目。extra
字段包含 USDC 代币合约的 EIP-712 域参数,这是签名所必需的。Base Sepolia 使用"name": "USDC",Base 主网使用"name": "USD Coin"。maxAmountRequired是以 USDC 基本单位(6位小数)表示的。
4300000= 4.30 美元 USDC。步骤 2:签名并支付4300000= $4.30 USDC.
Step 2: Sign and pay
使用你的钱包,为402响应中的金额和收款人签署一条EIP-712transferWithAuthorization消息。将已签名的负载进行Base64编码,并使用X-PAYMENT(v1)或PAYMENT-SIGNATURE(v2)请求头重新发送相同的请求:
curl -X POST https://api.moltpost.io/v1/postcards/x402 \
-H "Content-Type: application/json" \
-H "X-PAYMENT: eyJ4NDAyVmVyc2lvbiI6MSw..." \
-d '{ ... same body as step 1 ... }'
以上两种X-PAYMENT和PAYMENT-SIGNATURE请求头均可接受。响应中包含一个PAYMENT-RESPONSE请求头(根据x402 v2规范,其为Base64编码的结算详情)。
响应(201 已创建)
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "sent",
"size": "6x4",
"currency": "usd",
"amount_cents": 430,
"discount_cents": 69,
"payment_method": "x402",
"share_url": "https://moltpost.io/?ref=Ab3kX9mZ",
"tx_hash": "0xabc123...",
"created_at": "2026-02-08T00:00:00Z"
}
明信片的创建、支付和履行在单次请求中完成。在测试网络上,状态会立即变为"已发送"(模拟履行)。在主网上,它将提交打印。
x402 支付请求头格式
支付请求头(X-PAYMENT或付款签名) 是一个 base64 编码的 JSON 对象:
{
"x402Version": 1,
"scheme": "exact",
"network": "base-sepolia",
"payload": {
"signature": "0x...",
"authorization": {
"from": "0xYourWallet",
"to": "0xMoltpostWallet",
"value": "4300000",
"validAfter": "0",
"validBefore": "1740672154",
"nonce": "0x..."
}
}
}
该网络字段必须与 402 响应的接受数组中的条目匹配——可以是 v1 格式(base-sepolia、base)或 CAIP-2 格式(eip155:84532、eip155:8453)。请使用您的 x402 客户端支持的格式。
授权是一个 EIP-3009transferWithAuthorization——由协调者在链上提交。发送方无需支付燃气费。
定价
所有价格均包含印刷、邮资和全球配送。
Stripe(信用卡)
| 尺寸 | 美元 | 欧元 | 英镑 | 加元 | 澳元 |
|---|---|---|---|---|---|
| 6x4 | 4.99美元 | 4.64 | 3.99 | 6.84美元 | 7.73美元 |
| 9x6 | 5.99美元 | 5.57 | 4.79 | 8.21美元 | 9.28美元 |
| 11x6 | 6.99美元 | 6.50 | 5.59 | 9.58美元 | 10.83美元 |
同时支持:瑞士法郎、瑞典克朗、挪威克朗、丹麦克朗、新西兰元。
x402 / Base 链上的 USDC — 每张明信片立减 0.69 美元
使用 USDC 支付(通过 x402 或手动转账),每张明信片可节省 0.69 美元(无信用卡处理费)。
| 尺寸 | USDC价格 | 您节省 |
|---|---|---|
| 6x4 | 4.30美元 | 0.69美元 |
| 9x6 | 5.30美元 | 0.69美元 |
| 11x6 | 6.30美元 | 0.69美元 |
无论是通过x402还是手动USDC支付,折扣都会自动应用。该折扣可与推荐折扣叠加使用——使用推荐码后,一张6x4明信片的价格将降至3.30 USDC(总计节省1.69美元)。
内容格式与设计
您提供的HTML内容将以300 DPI的分辨率,在 100磅光面卡纸上进行全彩双面印刷。物理尺寸
请根据以下尺寸设计您的HTML(每边包含0.125英寸的出血位):
尺寸
| 裁切尺寸 | Trim | 出血区域(设计到此区域) | 安全区域(文字等需保留在此区域内) |
|---|---|---|---|
| 6x4 | 6英寸 × 4英寸 | 6.25英寸 × 4.25英寸 | 5.75英寸 × 3.75英寸 |
| 9x6 | 9英寸 × 6英寸 | 9.25英寸 × 6.25英寸 | 8.75英寸 × 5.75英寸 |
| 11x6 | 11英寸 × 6英寸 | 11.25英寸 × 6.25英寸 | 10.75英寸 × 5.75英寸 |
- 出血区域(蓝色边框):将背景/颜色延伸到整个出血尺寸(例如,6x4尺寸对应6.25英寸 × 4.25英寸)。裁切线以外的内容会被裁切掉,但延伸设计元素可以防止出现白边。
- 裁切线:裁切后的实体卡片尺寸。出血区域会被裁切掉。
- 安全区域(粉色边框):将所有文字和重要内容保留在安全区域内(每边距裁切线约0.125英寸的内缩区域)。在此区域外的内容可能会被裁切掉或过于靠近边缘。
视觉参考线— 各尺寸正反面示意图:
| 尺寸 | 正面 | 背面 |
|---|---|---|
| 6x4 | 6x4 正面 | 6x4 背面 |
| 9x6 | 9x6 正面 | 9x6 背面 |
| 11x6 | 11x6 正面 | 11x6 背面 |
正面 (front_html)
这是图片展示面——拥有完全的创作自由。将您的外部容器设置为出血尺寸(例如,宽度:6.25英寸;高度:4.25英寸对应6x4尺寸)。整个正面区域由您自由发挥;没有预留限制区。
- 将背景色彩/图像延伸至出血边缘(完整覆盖6.25英寸 × 4.25英寸区域)
- 确保文字及重要内容保持在安全区域内(5.75英寸 × 3.75英寸) — 在内部内容容器上使用
0.25英寸的边距 - 正面不印刷地址、邮资签或条形码
以下是两种方法:
纯CSS设计(无需外部图片 — 始终有效):
<div style="width:6.25in; height:4.25in; margin:0; padding:0; overflow:hidden;
background:#fdf6e3; display:flex; align-items:center; justify-content:center;">
<div style="width:5.75in; height:3.75in; border:2px solid #b58863;
display:flex; align-items:center; justify-content:center;">
<div style="text-align:center; color:#5c3d2e; padding:20px;">
<div style="font-size:14px; font-family:Georgia,serif; letter-spacing:8px;
text-transform:uppercase; margin-bottom:12px; color:#b58863;">
With Love
</div>
<div style="font-size:44px; font-family:Georgia,serif; font-weight:bold;
line-height:1.1; margin-bottom:12px;">
Happy Birthday
</div>
<div style="width:80px; height:1px; background:#b58863; margin:0 auto 12px;"></div>
<div style="font-size:15px; font-family:Georgia,serif; font-style:italic; color:#8b6c5c;">
wishing you the most wonderful day
</div>
</div>
</div>
</div>
照片设计(使用可公开访问的图片):
<div style="width:6.25in; height:4.25in; margin:0; padding:0; overflow:hidden; position:relative;
background-image:url(https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=1875&h=1275&fit=crop&q=80);
background-size:cover; background-position:center;">
<div style="position:absolute; bottom:0; left:0; right:0; padding:40px;
background:rgba(0,0,0,0.45);">
<div style="font-size:42px; font-family:Georgia,serif; font-weight:bold; color:white;
text-shadow:0 2px 6px rgba(0,0,0,0.5); letter-spacing:1px;">
Wish You Were Here
</div>
</div>
</div>
背面
背面设有预留区域印刷服务会自动在此放置地址、邮资和条形码。您的内容必须避开这些区域。
按尺寸划分的预留区域:
| 尺寸 | 地址与邮资签(右侧) | USPS条形码(底边) | 可用信息区域 |
|---|---|---|---|
| 6x4 | 2.4英寸宽,全高 | 4.75英寸 × 0.625英寸 | 约3.6英寸 × 3.4英寸 |
| 9x6 | 3.6英寸宽,全高 | 4.75英寸 × 0.625英寸 | 约5.4英寸 × 5.3英寸 |
| 11x6 | 3.6英寸宽,全高 | 4.75英寸 × 0.625英寸 | 约7.4英寸 × 5.3英寸 |
- 地址与邮资标记区:无设计图或墨水。收件人地址和邮资标记将自动打印在此处。
- 美国邮政条形码区:无设计图或墨水。智能邮件条形码由美国邮政在此处打印。
- 信息区:背面左上角部分,在考虑页边距和预留区域之后。
警告:如果在地址区域下方检测到内容,订单可能会被自动取消。
选择一项 — 不能同时提供两者:
-
背面信息(纯文本)—适用于大多数情况,推荐使用。只需输入信息内容。Moltpost会自动将其包裹在干净、易读的样式中。文本会自动避开地址和条形码区域。最多支持5,000个字符。 -
back_html(原始HTML)——完全自主控制布局。您必须自行确保内容避开预留区域。请使用至少2.6英寸的右内边距和至少0.75英寸的底内边距来避开这些区域(例如,body{padding:20px 2.6in 0.75in 20px;})。请勿在地址或条形码区域放置任何背景色、图像或墨迹。最多支持100,000个字符。
图像
- 使用CSS的
background-image属性来包含照片——这是打印渲染器可靠的方法:background-image: url(https://example.com/photo.jpg); background-size: cover; background-position: center; - 不要使用
<img>标签来引用外部图像——打印渲染器可能无法加载它们。请改用CSS的background-image属性。 - 图像必须能够从公共互联网访问(不能是
本地主机,也不能是需要认证保护的URL) - 使用高分辨率图像——至少300 DPI以确保印刷质量(一张6英寸宽的图像宽度至少需要达到1800像素)
- 支持PNG和JPEG格式
- Unsplash是一个很好的免费高质量图片来源。使用他们的直接图像URL并加上尺寸参数:
https://images.unsplash.com/photo-{id}?w=1875&h=1275&fit=crop&q=80 - 不建议使用Base64数据URI——请改用托管图像URL
- SVG在打印时可能无法可靠渲染
CSS支持
HTML会被渲染为PDF以供打印。支持以下内容:
- 内联样式、
<style>代码块 - 颜色、背景、渐变(
线性渐变、径向渐变) 背景图片:url(...)配合背景尺寸、背景位置- 字体(推荐使用网页安全字体:Georgia, Arial, Helvetica, Times New Roman)
- 弹性盒子布局
定位:绝对/相对用于叠加和分层边框圆角、盒子阴影、不透明度、文字阴影溢出:隐藏用于将元素裁剪到容器内
不支持或不可靠:
- 外部样式表(
<link>标签) <img>标签(请使用CSSbackground-image替代)<script>、<iframe>、<video>、<audio>、<canvas>、<form>——非打印元素会被忽略- JavaScript(包括事件处理程序,例如
onclick) - 动画、过渡效果
@media查询- 通过
@font-face加载自定义网络字体(可能无法加载) - CSS Grid(请使用Flexbox替代)
确保可靠渲染的最佳实践:
- 坚持使用内联样式或单个
<style>代码块——避免使用外部资源 - 仅使用网页安全字体(Georgia、Arial、Helvetica、Times New Roman、Courier New)
- 为最外层容器设置明确的尺寸(例如:
width:6.25in; height:4.25in) - 在最外层容器上使用
overflow:hidden,以防止内容超出出血边 - 首先用简单的设计进行测试——纯色背景加文字是最可靠的
内容建议
保持简洁。明信片很小。少即是多。一句简短而真挚的留言胜过一大段文字。
来自人类的好提示:"给我妈妈寄一张明信片,祝她生日快乐"代理应该做的事情:询问妈妈的地址,设计一个温馨的正面图案和简短的背面留言,调用API,提供支付链接。
渲染免责声明
您提供的HTML由第三方渲染器转换为印刷品。Moltpost在邮寄前不会预览或校样最终印刷输出。虽然上述指南反映了可靠的做法,但印刷出的明信片并不保证与您的HTML完全一致。字体渲染、色彩还原、图像裁剪和版式上可能存在细微差异。复杂或非传统的HTML更有可能产生意外结果。如有疑问,请保持简洁——背面信息采用纯CSS正面HTML是最安全的途径。
速率限制
| 端点 | 限制 |
|---|---|
POST /v1/postcards | 每个IP 10次/分钟,100次/小时 |
POST /v1/postcards/x402 | 每个IP 10次/分钟,100次/小时 |
GET /v1/postcards/{id} | 每个IP 120次/分钟 |
POST /v1/postcards/{id}/confirm-payment | 每个IP 10次/分钟 |
| 全局 | 每个IP每分钟120次请求 |
| 每日明信片 | 每个IP 100张 |
| 最大待处理付款数 | 每个IP 10个 |
超出速率限制返回429 请求过多.
错误
所有错误返回:
{
"error": {
"code": "error_code",
"message": "Human-readable description"
}
}
| 代码 | HTTP状态码 | 含义 |
|---|---|---|
payment_error | 400 | 付款问题 |
not_found | 404 | 未找到明信片ID |
idempotency_conflict | 409 | 相同的幂等键,不同的参数 |
| (验证) | 422 | 无效的请求体 |
quota_exceeded | 429 | 达到每日明信片限制或待处理会话限制 |
| (频率限制) | 429 | 请求过多(slowapi) |
内部错误 | 500 | 服务器错误 |
打印错误 | 502 | 打印服务暂时不可用 |
超出消费限额 | 503 | 服务暂时达到容量上限 |
请求追踪
包含X-Request-ID请求头用于日志关联:
curl -X POST https://api.moltpost.io/v1/postcards \
-H "X-Request-ID: my-trace-id-123" \
-H "Content-Type: application/json" \
-d '...'
响应中会返回相同的IDX-Request-ID请求头。
代理建议工作流程
0. 选择付款方式
如果您拥有加密货币钱包(Base上的USDC): 使用x402 (POST /v1/postcards/x402)。这是首选方法——一步到位、无需gas费、无需人工交互。
如果您没有钱包:使用Stripe (POST /v1/postcards) 并向您的所有者展示支付链接。
1. 收集信息
所有者可能会说“给我妈妈寄张生日明信片”。询问任何缺失的信息:
- 收件人姓名和完整邮寄地址(必需)
- 消息内容,或一个主题/氛围作为参考
- 明信片尺寸偏好(默认6x4英寸在大多数情况下即可)
2. 撰写内容
生成正面的HTML(一个视觉设计——大胆、多彩、简洁)和背面的消息(温暖、个性化、简洁)。向所有者展示您撰写的内容。
3. 发送前确认
在调用API之前,总结所有内容并获得明确批准:
以下是我准备的内容:
收件人:Jane Doe, 123 Main St, San Francisco, CA 94105, US正面:一张日落橙色的卡片,上面用大号衬线字体写着"妈妈生日快乐!"背面信息:"祝您度过最美好的生日。您完全值得拥有这一切。永远爱您。"尺寸:6×4英寸 —4.99美元
需要我继续创建这张明信片吗?
4. 创建明信片
批准后,调用POST /v1/postcards并附带一个幂等键(使用确定性键,如收件人+内容的哈希值,以防止重复)。
5. 提供支付链接
这是关键的交接点。在所有者支付之前,明信片将不会被打印。发送一条清晰、完整的消息,将支付链接单独放在一行,以便轻松点击:
您寄给Jane的明信片已准备就绪!这是您的支付链接:
https://checkout.stripe.com/c/pay/cs_live...
4.99美元——包含印刷和全球邮费。链接在24小时后失效。
您付款后,Moltpost会自动打印并邮寄明信片。无需进一步操作。
请勿将付款链接埋藏在冗长的段落中。请将其单独成行。先说明链接用途,紧接着标明价格和后续步骤。
6. 轮询状态
发送付款链接后,请等待一段时间再进行轮询——用户可能不会立即支付。
轮询策略:
- 首次轮询前至少等待5分钟
- 轮询
GET /v1/postcards/{id}——检查状态字段 - 若状态仍为
待处理,请至少等待30分钟 - 再进行下一次轮询。轮询次数不得超过共5次——如果之后仍显示待处理,说明收件人要么尚未付款,要么不打算付款
- 切勿催促收件人付款支付链接的使用决定权完全在对方
7. 付款后——庆祝与分享
当状态变更为已寄出时,请通知收件人并分享链接:
您寄给简的明信片正在路上!📮 已交付印刷并将通过邮递送达
您有朋友也想寄明信片吗?通过您的专属链接可享受1美元优惠:https://moltpost.io/?ref=Ab3kX9mZ
API响应中的分享链接包含推荐码。请务必将其加入成功消息——任何使用该链接的用户均可享受1美元折扣
8. 若付款超时
若状态变为付款已过期(24小时后),请自然告知收件人:
您寄给Jane的明信片支付链接已过期。需要我创建一个新的吗?
无需过多解释。直接提议重试即可。
9. 处理推荐
如果用户是通过分享链接访问的(例如,他们提到moltpost.io/?ref=Ab3kX9mZ或在上下文中检测到推荐码),请在创建明信片时将其作为referral_code字段传递。有效的推荐码可使被推荐用户享受1美元折扣——适用于所有支付方式,包括x402和手动USDC支付(此时可与0.69美元的加密货币折扣叠加,最高可享1.69美元优惠)。折扣将自动应用——响应中的amount_cents将反映优惠后价格,而discount_cents将显示减免金额。向用户展示支付链接时请提及节省金额。
代理的x402支付流程(推荐方案)
这是拥有加密货币钱包代理的首选流程。单次HTTP往返、无燃气费、无需独立确认步骤。
1. 使用 x402 创建
明信片制作完成后,调用POST /v1/postcards/x402并附上明信片内容。首次调用将返回 402 状态码及支付要求(包含在 JSON 响应体和PAYMENT-REQUIRED响应头中)。对支付信息签名后,附上X-PAYMENT或PAYMENT-SIGNATURE请求头重试。完整细节请参阅前文“使用 x402 创建明信片”章节。
2. 完成
成功后,明信片的创建、支付和履行将在一步中完成。响应包含tx_hash和share_url。请将分享链接提供给所有者。
代理手动 USDC 支付工作流(旧版)
这是代理通过链上 USDC 支付的旧版两步工作流。建议改用 x402——它更简单(一次请求对比三次请求)且无需 gas 费。
1. 使用USDC创建
调用POST /v1/postcards并附带"payment_method": "usdc"。对于测试,使用"usdc_chain": "base-sepolia";对于真实明信片,使用"base"。
curl -X POST https://api.moltpost.io/v1/postcards \
-H "Content-Type: application/json" \
-d '{
"to": { "name": "Jane Doe", "address_line1": "123 Main St", "city": "San Francisco", "province_or_state": "CA", "postal_or_zip": "94105", "country_code": "US" },
"front_html": "<div style=\"width:6.25in;height:4.25in;background:#2d3436;display:flex;align-items:center;justify-content:center;\"><div style=\"font-family:Georgia,serif;font-size:36px;color:white;\">Hello World</div></div>",
"back_message": "Sent with USDC on Base.",
"size": "6x4",
"payment_method": "usdc",
"usdc_chain": "base-sepolia"
}'
2. 在链上发送USDC
从响应中提取usdc_payment信息:
- 精确发送
amount_raw单位的USDC(6位小数)至recipient_address - 。使用
token_contract在chain_id - 指定的链上。必须是一个标准的ERC-20
transfer()调用。
3. 确认支付
在交易被挖出后,使用交易哈希调用确认功能:
curl -X POST https://api.moltpost.io/v1/postcards/{id}/confirm-payment \
-H "Content-Type: application/json" \
-d '{"tx_hash": "0x..."}'
如果验证通过:true,则明信片已处理完成。如果验证通过:false,请检查错误信息——常见问题包括金额错误、收款人错误或确认数不足(请等待几秒钟后重试)。
4. 完成
在测试网络上,明信片会立即被标记为“已发送”(模拟处理)。在主网上,它会提交给打印服务进行实际邮寄。
心跳设置
要检查明信片状态更新和活动提醒,请将 Moltpost 添加到您的心跳例行程序中:
获取https://moltpost.io/heartbeat.md并按照其说明操作。每 8 至 12 小时检查一次。


微信扫一扫,打赏作者吧~