TutuPP API docs
Use the REST API or MCP protocol to let an AI assistant handle photo printing, document printing, order management and every other operation directly.
Supports 21 mainstream AI clients including Claude, Gemini, Codex and Copilot.
Quick start
Integrate in three steps and start using AI for printing right away.
Register an account
Visit the TutuPP website and register quickly with a phone verification code.
Create an API Key
On the “API keys” page in your account center, create a key with one click and use it right away.
Make a request
Call the REST API with your API Key, or configure it in an AI client to use MCP.
Authentication
All API requests authenticate by carrying the API Key in an HTTP header.
Authorization: Bearer tk_YOUR_API_KEY
Base URL
https://tutupp.comResponse format
Content-Type: application/jsonMCP endpoint
POST https://tutupp.com/api/mcpMCP integration
MCP (Model Context Protocol) is an open protocol from Anthropic that lets AI assistants call external tools directly.
Once configured, you can use natural language to have the AI run the full “upload document → create order → pay with balance” flow.
Protocol info
Endpoint:https://tutupp.com/api/mcp
Protocol:JSON-RPC 2.0 over Streamable HTTP
Methods:initialize · tools/list · tools/call
File upload:Supports the multipart/form-data extension (message part + file parts, zero base64, 100MB+) and standard application/json
Choose your AI client 21
Add (Add)
claude mcp add --transport http tutupp https://tutupp.com/api/mcp --header "Authorization: Bearer tk_YOUR_API_KEY"
Add --scope user for global, --scope project for the current project only
Replace key (Replace)
claude mcp remove tutupp && claude mcp add --transport http tutupp ...(new key)
Remove (Remove)
claude mcp remove tutupp
AI conversation example
AI calls automatically:
1. upload_document → Upload the file
2. get_print_prices → Look up A4 B&W pricing
3. create_order → Create the order
4. pay_with_balance → Pay with balance
REST API reference
An API Key can access all the endpoints below, covering every feature in the UI.
Document management
/api/documents/upload Upload a document (multipart/form-data, PDF/DOC/DOCX/XLS/XLSX/PPT/PPTX, ≤50MB)/api/documents List my documents/api/documents/{id} Get document details/api/documents/{id} Delete a documentPhoto management
/api/photos/upload Upload a photo (multipart/form-data, JPEG/PNG/WebP/HEIC, ≤120MB)/api/photos/{id} Get photo details/api/photos/{id} Delete a photo/api/photos/{id}/quality-check?size={size} Check photo print qualityOrders
/api/orders Create a print order/api/orders List my orders/api/orders/{id} Get order details/api/orders/{id}/cancel Cancel an order/api/orders/track/{order_no} Track by order number/api/orders/{id}/tracking Get shipment tracking infoPayment
/api/payment/create Create third-party payment (Alipay/WeChat, returns payment_url)/api/payment/balance Pay order with balance/api/payment/status/{order_id} Query payment statusBalance
/api/user/balance Query balance/api/user/balance/topup Start a top-up (returns payment_url)/api/user/balance/transactions Balance transactionsCoupons
/api/user/coupons My coupon list/api/user/coupons/available Available coupons (filter by amount/scope)/api/user/coupons/redeem Redeem a coupon codeShipping addresses
/api/addresses Address list/api/addresses Create an address/api/addresses/{id} Update an address/api/addresses/{id} Delete an address/api/addresses/parse Smart-parse address textOrder for others (pre-orders)
/api/user/pre-orders Pre-order list/api/user/pre-orders Create a pre-order/api/user/pre-orders/{id} Pre-order details/api/user/pre-orders/{id} Update a pre-order/api/user/pre-orders/{id}/status Change pre-order status/api/user/pre-orders/{id}/submissions/{sid}/review Review a submission/api/user/pre-orders/{id}/submissions/{sid}/cancel Cancel a submissionPre-order sharing
/api/share/{code} Get share-link info/api/share/{code}/submit Submit photos to a share link/api/share/{code}/submissions/{sid} Query submission status/api/share/{code}/my-submissions My submissions listAfter-sales
/api/user/after-sales My after-sales list/api/after-sales Start an after-sales request (refund/reprint/reship)Regions & delivery
/api/regions Region list (filter by level/parent/keyword)/api/regions/{id} Region details and sub-regions/api/regions/tree Full region tree (province → city → district)/api/regions/coverage Agent coverage stats/api/regions/{city_id}/city-coverage City/district coverage/api/regions/{id}/express-delivery Check same-day delivery/api/regions/{id}/pickup-points Pickup point list/api/agents/referral/{code} Find agent by referral code/api/shipping/config Shipping config (global)/api/shipping/carriers Carrier list (incl. remote surcharge)Config lookup
/api/prices Print prices + volume discounts ({prices, volume_tiers})/api/print-options/sizes Available sizes/api/print-options/paper-types Available paper typesAI photo restoration
/api/photos/{id}/restore Start an AI restoration preview/api/restorations/{id} Get restoration resultUser info
/api/auth/me Get current user info/api/auth/me Update profilePrint status
/api/printer/status Printer status/api/print-queue/status Print queue status/api/orders/auto-print-schedule Get auto-print time windowAPI key self-service
/api/user/api-keys List my API Keys/api/user/api-keys Create an API Key (full key shown only once)/api/user/api-keys/{id} Revoke an API KeySystem health
/api/health Service health check (no auth, monitoring/K8s probe)MCP tool list69
All the tools below can be called via the MCP protocol; AI clients discover them automatically once configured.
Document management
upload_document Upload a document (PDF/DOC/DOCX/XLS/XLSX/PPT/PPTX) — one of: file_url / content (base64) / file_path (curl) file_url | content | file_path, filename?list_documents List all documents uploaded by the current user get_document_info Get document details (page count, file size, etc.) document_iddelete_document Delete a document (only if not linked to an active order) document_idPhoto management
upload_photo Upload a photo (JPG/PNG/WebP/HEIC) — one of: file_url / content (base64) / file_path (curl) file_url | content | file_path, filename?get_photo Get photo details photo_iddelete_photo Delete a photo (only if not linked to an active order) photo_idcheck_photo_quality Check photo print quality at a given size (DPI) photo_id, sizeOrders
create_order Create a print order items[], delivery_method?, shipping_carrier_id?, coupon_id?list_orders List all orders of the current user get_order_status Query order status and details order_idcancel_order Cancel an order (only while pending payment) order_idtrack_order Look up order info by order number (public) order_noget_order_tracking Get order shipment tracking info order_idPayment & balance
create_payment Create third-party payment (returns payment_url, open in browser to pay) order_id, payment_method?pay_with_balance Pay an order with account balance order_idget_payment_status Query order payment status order_idcreate_topup Create a balance top-up order (returns payment_url) amount, payment_method?get_balance Query account balance (total/frozen/available) get_balance_transactions Query balance transaction records page?, page_size?Coupons
list_coupons List the current user's coupons scope?get_available_coupons Get available coupons (filter by amount) amount?, scope?redeem_coupon Claim a coupon via redemption code codeShipping addresses
list_addresses List shipping addresses create_address Add a shipping address name, phone, province, city, district, detail, ...update_address Update a shipping address address_id, ...delete_address Delete a shipping address address_idparse_address Smart-parse address text textOrder for others (pre-orders)
list_pre_orders List all pre-orders create_pre_order Create a pre-order (share a link for others to submit) title, order_type, spec_mode, ...get_pre_order Get pre-order details (incl. all submissions) pre_order_idupdate_pre_order Update pre-order settings pre_order_id, ...update_pre_order_status Change pre-order status pre_order_id, statusreview_submission Review a pre-order submission pre_order_id, submission_id, approved, reject_reason?cancel_submission Cancel a submission pre_order_id, submission_idPre-order sharing
get_share_info Get share-link info share_codesubmit_share_photos Submit photos to a share link share_code, photo_ids[], password?, ...get_submission_status Query submission status and photo details share_code, submission_idlist_my_submissions List all submissions under a share link share_codeAfter-sales
list_after_sales List the current user's after-sales records create_after_sales Create an after-sales request (refund/reprint/reship) order_id, type, reason, ...Regions & delivery
list_regions Query region list level?, parent_id?, search?get_region Get region details and sub-regions region_idget_region_tree Get the full region tree (province → city → district) get_region_coverage Get agent coverage stats get_city_coverage Get district coverage within a city city_idget_agent_by_referral Find agent by referral code referral_codecheck_express_delivery Check whether same-day delivery is supported region_idget_shipping_config Get delivery/shipping config (global) get_shipping_carriers Get carrier list (incl. remote surcharge) list_pickup_points Query pickup point list region_idConfig & status
get_print_prices Get print prices + volume-discount tiers get_print_options Get available sizes and paper types get_printer_status Query printer status get_queue_status Query print queue status User info
get_profile Get the current user's profile update_profile Update user nickname nicknameAI photo restoration
restoration_preview Run an AI restoration preview on a photo photo_idget_restoration Get AI restoration task result restoration_idAPI key self-service
list_api_keys List all API Keys of the current user create_api_key Create a new API Key (full key shown only once) name, expires_in_days?revoke_api_key Revoke a specific API Key api_key_idSystem
health_check Check service health (database/payment gateway/version) get_auto_print_schedule Get auto-print time-window settings Order reviews
submit_order_review Submit a single order review (3-dimension rating + comment); idempotent via ON CONFLICT; rate-limited 5/h order_id, rating_print, rating_shipping?, rating_service?, comment?batch_submit_order_reviews Batch review (max 20 · single transaction · atomic); one-tap 5-star items[{order_id, rating_print, ...}]list_my_order_reviews List my reviews (paginated envelope) page?, limit?get_order_review Get a single review's details (incl. official reply) review_idmark_order_review_read Mark official reply as read (CTE prevents replay, reduces nav badge count) review_idCode examples
A full example of the “look up prices → upload file → create order → pay with balance” flow.
# 查询打印价格
curl https://tutupp.com/api/prices \
-H "Authorization: Bearer tk_YOUR_API_KEY"
# 上传文档
curl -X POST https://tutupp.com/api/documents/upload \
-H "Authorization: Bearer tk_YOUR_API_KEY" \
-F "file=@report.pdf"
# 创建订单
curl -X POST https://tutupp.com/api/orders \
-H "Authorization: Bearer tk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [{
"document_id": "uuid-here",
"size": "A4",
"paper_type": "matte",
"quantity": 1
}],
"delivery_method": "pickup"
}'
# 余额支付
curl -X POST https://tutupp.com/api/payment/balance \
-H "Authorization: Bearer tk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"order_id": "uuid-here"}' Typical workflow
Error handling
The API uses standard HTTP status codes; error responses contain error info in JSON.
// Error response format
{
"error": "Error description"
}retry_after_seconds field + a Retry-After header.Ready to get started?
Register an account, create an API Key, and let AI handle your printing.