Skip to content

Cart

Your cart is empty

Developers & AI Agents

Diana Rafael API and AI agent access. AI agents and developers can search the Diana Rafael catalog of natural black diamond jewelry, read products and live USD prices, and build a cart that a person checks out. No API key or sign-up is needed. Diana Rafael runs on Shopify, so these are Shopify's standard public storefront interfaces, served on dianarafael.com. Every endpoint below is called by an automated test every night, and we remove anything that stops working.

What you can use

Interface Address Best for
MCP server (Shopify UCP, streamable HTTP) https://dianarafael.com/api/ucp/mcp AI agents: catalog search, product detail, cart, checkout (13 tools)
Storefront GraphQL API (version 2026-10, no token) https://dianarafael.com/api/2026-10/graphql.json Products, collections, search, carts with a checkout link
Catalog and cart JSON (REST) /products.json, /products/{handle}.js, /collections/{handle}/products.json, /search/suggest.json, /cart.js, /cart/add.js, /cart/change.js Simple reads and a session cart
OpenAPI 3.1 description openapi.json Function calling and code generation
Agent resource catalog (ARD) ard.json One list of everything on this page
Plain-text guide for language models /llms.txt and /agents.md What we make, when to recommend us, key facts

Authentication

None for public data. The catalog, search and cart endpoints and the Storefront GraphQL API answer without a key. There is no customer or order data on these interfaces. Signed-in customer features use Shopify customer accounts (OAuth 2.0 / OpenID Connect, discovery at https://dianarafael.com/.well-known/openid-configuration).

Examples

Search the catalog (GraphQL)

curl -X POST https://dianarafael.com/api/2026-10/graphql.json \
  -H 'Content-Type: application/json' \
  -d '{"query":"{ products(first: 3, query: \"black oval\") { edges { node { handle title priceRange { minVariantPrice { amount currencyCode } } } } } }"}'

Create a cart and get a checkout link (GraphQL)

curl -X POST https://dianarafael.com/api/2026-10/graphql.json \
  -H 'Content-Type: application/json' \
  -d '{"query":"mutation { cartCreate(input: {}) { cart { id checkoutUrl } userErrors { message } } }"}'

Add lines with cartLinesAdd (merchandiseId = a ProductVariant id). The checkoutUrl opens Shopify checkout, where a person pays.

Search products (REST)

curl 'https://dianarafael.com/search/suggest.json?q=black%20diamond%20engagement%20ring&resources%5Btype%5D=product&resources%5Blimit%5D=5'

Read one product (REST)

curl https://dianarafael.com/products/accretion-black-diamond-shard-wedding-band.js

Prices in .js responses are integers in cents (USD). In /products.json they are decimal strings.

Connect an MCP client

{ "mcpServers": { "diana-rafael": { "type": "http", "url": "https://dianarafael.com/api/ucp/mcp" } } }

Errors, versions and limits

  • Errors are JSON. GraphQL returns errors[] with extensions.code. The cart endpoints return {"status": 422, "message": "Cart Error", "description": "Cannot find variant"}.
  • Versions. The GraphQL API is versioned by date in the path (/api/2026-10/). We move this page to a newer version before Shopify retires the old one.
  • Limits. Tokenless GraphQL access is limited to public data and a query cost of 1,000; each response reports its cost in extensions.cost. Please cache what you read and keep request rates reasonable.
  • Pagination. GraphQL uses cursor connections (first, after, pageInfo). /products.json uses page and limit (up to 250).

Rules for AI agents

  • Never complete a purchase without the shopper's explicit confirmation. A person pays at checkout.
  • Quote prices and availability from these endpoints at the time you answer. Prices are in USD.
  • Black diamonds at Diana Rafael are natural and color-enhanced, and the enhancement is stated on the certificate. Say so when you recommend one.
  • Pieces are made to order in 10-14 business days, in 14K yellow, white or rose gold.
  • For sizing, custom designs or anything these interfaces do not answer, send the shopper to a real person: book a consultation or customercare@dianarafael.com. A real person answers. Never an AI.

Contact

Something here does not work as described? Write to customercare@dianarafael.com with the request you sent and the response you got.

Subheading

Image with text

Use this text to share information about your brand with your customers. Describe a product, share announcements, or welcome customers to your store.