PepChile Developer API
PepChile is a research-peptide store in Chile. The catalog, the prices, the stock and the shipping quotes are available through a public API. The API is free. It has no key and no account.
Start here
You do not have to sign up. You do not have to ask for access.
No API key
The PepChile API has no key, no token and no account. Every endpoint in the list below is public and free.
Only one endpoint is different. /api/checkout needs a Supabase anonymous session, because it creates an order. An agent cannot complete a purchase, because the payment step needs a person.
Your first call
Send this command. It returns the full catalog with live prices in Chilean pesos.
curl https://pepchile.com/api/productsSandbox
Use the sandbox while you develop. The sandbox runs the same code on a separate database with test data.
The sandbox base URL is https://pepchile-dev.pages.dev. Do not use sandbox data in production, and expect no promise of availability.
curl https://pepchile-dev.pages.dev/api/productsOpenAPI specification
The specification is OpenAPI 3.1. It describes every path, every parameter and every response.
Where to get it
The build makes both files from one module, so the two agree.
Servers
The specification lists two servers. The first server is production. The second server is the sandbox.
The specification declares an empty security list, because the read endpoints need no credential.
REST endpoints
All responses are JSON, unless the table shows a different type.
The endpoint list
Read the OpenAPI document for the parameters and the response fields of each endpoint.
Status codes
A path that this origin does not serve returns 404. It does not return the web page. Do not try other spellings of a URL that returned 404.
A GET request to an endpoint that accepts only POST returns 405 with an Allow header.
A HEAD request returns the same status as a GET request, but with no body.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/products | The full catalog with price, stock and purity. |
| GET | /api/products/{id} | One product. The id keeps the dose suffix. |
| GET | /api/faqs | The storefront questions and answers. |
| GET | /api/reviews/{productId} | The published reviews of one product. |
| GET | /api/peptide-info | A reference article for each peptide. |
| GET | /api/peptide-info/{slug} | The reference article for one peptide. |
| GET | /api/exchange-rate | The reference rate from USD to CLP. |
| GET | /api/store/config | The public storefront configuration. |
| GET | /api/contact-config | The Turnstile site key for the contact form. |
| GET | /api/merchant-feed | The product feed for Google Merchant Center. |
| GET | /api/guides/{slug} | The PDF guide of one product. |
| GET | /api/shipit/branch-offices | The courier branches in one commune. |
| POST | /api/shipit/rates | A courier quote to a Chilean commune. |
| POST | /api/shipit/resolve-commune | The courier id of a Chilean commune. |
| POST | /api/cart/validate | A check of a cart against live stock and live prices. |
| POST | /api/mcp | The Model Context Protocol server. |
| POST | /api/a2a | The A2A agent. |
MCP server
The Model Context Protocol server gives an assistant the same data as the REST API.
How to connect
The transport is Streamable HTTP. The protocol version is 2025-06-18. The server keeps no session.
Send a JSON-RPC initialize request first. Then send tools/list.
curl -X POST https://pepchile.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Tools
search_products finds products by name or by research goal.
get_product returns one product. It accepts a URL slug or a database id.
get_shipping_quote returns a live courier price to a Chilean commune.
get_order_status returns the status of one order. It needs the order number and the email address on that order.
Resources and prompts
The server lists six resources: the agent instructions, llms.txt, llms-full.txt, the brand facts, the live catalog and the sitemap.
The server also lists two prompts: recommend_for_goal and reconstitution_plan.
A2A agent
The A2A endpoint runs the same four skills as the MCP server.
How to call it
Send a JSON-RPC message/send request. Put the skill in a DataPart.
A message that has only text returns the list of skills.
curl -X POST https://pepchile.com/api/a2a \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"1","method":"message/send",
"params":{"message":{"role":"user","messageId":"m1",
"parts":[{"kind":"data","data":{"skill":"search_products","query":"bpc-157"}}]}}}'Discovery files
Each file is machine-readable. Each file is public.
The file list
Read the agent instructions first. That file tells you when to use PepChile and when not to use it.
Rules and limits
These rules apply to every endpoint.
Data
All prices are Chilean pesos (CLP). The price includes IVA. Do not show a converted price as our price.
All text content is Spanish (es-CL).
A product URL slug has no dose suffix, for example bpc-157. A database id can have one, for example bpc-157-10mg.
Rate limits
The catalog endpoints have no quota for each IP address. Be reasonable. Read the full catalog one time, and do not request one product at a time in a loop.
The two shipping endpoints enforce 60 requests each minute for each IP address. Above that limit they return 429.
The MCP tool get_shipping_quote allows 30 requests each minute. The MCP tool get_order_status allows 10 requests each minute, because the email address is the only authorization.
Webhooks
PepChile sends no webhooks to third parties. To find a change, request the data again.
What the API does not do
Use a different source for these tasks.
Out of scope
The API gives no medical advice and no prescription. Every product is research-grade and has a research-use agreement.
PepChile ships only inside Chile. A quote to an address in a different country has no answer here.
The API holds no data about a competitor.
An agent cannot complete a purchase. Give the customer the product URL, or the WhatsApp number.