68trust / 100

Recommend

by api.melvea.com in Other

x402 APIPassing, checked 34 min ago

Grounded honey recommendations: send a flavor/use/occasion intent, receive ranked varieties chosen from Melvea's proprietary flavor, terroir, and scoring corpus — each with a grounded reason. Recommends on taste and use, not health.

POST
https://api.melvea.com/v1/recommend
Price
$0.1
per call in USDC
Uptime
98.8%
last 30 days
Response time
2.5 s
3.7 s slowest 5%
Last check
Passed
34 min ago, next any minute now

Run a free test callHow to call it

Reliability

All checks passedSome failedAll failedNot checked

Status and outage history · Atom feed · Watch with other listings

How to call it

POST https://api.melvea.com/v1/recommend

Each call costs $0.1 in USDC on Base, paid with the request over x402.

Run a free test callOne unpaid request, the way an agent sends it. You see the payment challenge it gets back. Nothing is charged.

Example request

From the listing.

POST https://api.melvea.com/v1/recommend
content-type: application/json

{
  "intent": "mild floral honey for a holiday gift",
  "max_results": 3
}

Parameters

ParameterTypeRequiredDescription
intentstringYesFree-text flavor/use/occasion intent
max_resultsnumberNoOptional, default 3, max 5

Example response

The provider's example. We can't check it without paying.

{
  "intent": "mild floral honey for a holiday gift",
  "results": [
    {
      "reason": "Delicate, light floral profile; a mild crowd-pleaser well suited to gifting.",
      "slug": "acacia",
      "variety_name": "Acacia"
    }
  ]
}

Call it from code

The curl command shows the payment challenge. The JavaScript and Python versions pay and call, and never pay more than $0.1.

curl: see the payment challenge
# bash or zsh: see the payment challenge. Nothing is charged.
curl -sS -g -i -X POST 'https://api.melvea.com/v1/recommend' \
  -H 'content-type: application/json' \
  --data-raw '{"intent":"mild floral honey for a holiday gift","max_results":3}'

# x402 v2 sends the challenge base64-encoded in the PAYMENT-REQUIRED header (v1 sends it in the body).
# To read the header:
curl -sS -g -o /dev/null -D - -X POST 'https://api.melvea.com/v1/recommend' \
  -H 'content-type: application/json' \
  --data-raw '{"intent":"mild floral honey for a holiday gift","max_results":3}' \
  | grep -i '^payment-required:' | cut -d' ' -f2 | tr -d '\r' | base64 --decode
JavaScript: pay and call
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

// Pays at most $0.1 per call.
const client = new x402Client().setSpendControls({ maxAmountPerPayment: "$0.1" });
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM_PRIVATE_KEY) });
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? ToolVet checks it first for $0.005. Pay for that from a separate
// client: this one is capped at $0.1 per payment. GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fapi.melvea.com%2Fv1%2Frecommend&method=POST
const res = await pay("https://api.melvea.com/v1/recommend", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    "intent": "mild floral honey for a holiday gift",
    "max_results": 3
  }),
});
console.log(res.status, await res.text());
Python: pay and call
# pip install "x402[requests,evm]"
import os
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

# Pays at most $0.1 per call.
client = x402ClientSync().set_spend_controls({"max_amount_per_payment": "$0.1"})
register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"])))

with x402_requests(client) as session:
    res = session.post(
        "https://api.melvea.com/v1/recommend",
        json={
            "intent": "mild floral honey for a holiday gift",
            "max_results": 3,
        },
    )
    print(res.status_code, res.text)

Security scan

1 finding

  • Payment address changed recently in payment
    Payment address changed from 0x461aD6C9aa23071C8D58aB921CDb9Ef1B05cA2cf to 0x97D4B1b9B2F510B937f5d4D85670f06E6C1d6e2F

Recent checks

WhenResultHTTPTimePrice
34 min agoPassed4022.0 s$0.1
8 h agoPassed4022.2 s$0.1
15 h agoPassed4022.5 s$0.1
22 h agoPassed4023.4 s$0.1
28 h agoPassed4022.5 s$0.1
Show 10 older checks
35 h agoPassed4023.3 s$0.1
41 h agoPassed4022.3 s$0.1
47 h agoPassed4022.0 s$0.1
2 days agoPassed4021.7 s$0.1
2 days agoPassed4024.0 s$0.1
3 days agoPassed4022.2 s$0.1
3 days agoPassed4022.2 s$0.1
3 days agoPassed4022.0 s$0.1
3 days agoPassed4021.4 s$0.1
4 days agoPassed4023.0 s$0.1

History

27 Oct 2026Payment address changed from 0x461aD6C9aa23071C8D58aB921CDb9Ef1B05cA2cf to 0x97D4B1b9B2F510B937f5d4D85670f06E6C1d6e2F
26 Oct 2026Payment address changed from 0x1496f71682E0016C0AeccF8DB9A15E3473F653C2 to 0x461aD6C9aa23071C8D58aB921CDb9Ef1B05cA2cf
26 Oct 2026Payment address changed from 0x57655d191Cc46d704Ba01c6e56CeC278aD7a6981 to 0x1496f71682E0016C0AeccF8DB9A15E3473F653C2
26 Oct 2026Payment address changed from 0x6eBb96e65869051018F18172d85C10d824098194 to 0x57655d191Cc46d704Ba01c6e56CeC278aD7a6981
26 Oct 2026Payment address changed from 0x9379d5350D6BB248423001EA75a75D9c931192aF to 0x6eBb96e65869051018F18172d85C10d824098194
25 Oct 2026Payment address changed from 0x2ccD1E9af9874a9e83d29dE5Aa423d22b75eD84c to 0x9379d5350D6BB248423001EA75a75D9c931192aF
25 Oct 2026Payment address changed from 0x0a3E8AC3711955AE51B5F9B071546e79374977C4 to 0x2ccD1E9af9874a9e83d29dE5Aa423d22b75eD84c
25 Oct 2026Payment address changed from 0x7456E717DCaC5AAdC76bCB56408562D46733445c to 0x0a3E8AC3711955AE51B5F9B071546e79374977C4
25 Oct 2026Payment address changed from 0x24264d5660c8c1009c9324dd2981Ed56f1C8060E to 0x7456E717DCaC5AAdC76bCB56408562D46733445c
24 Oct 2026Payment address changed from 0x06233a5e98916774c31d6B0671082A411B6Fa841 to 0x24264d5660c8c1009c9324dd2981Ed56f1C8060E
24 Oct 2026Payment address changed from 0x4831184D8543CB763584A440F17056384f8D475B to 0x06233a5e98916774c31d6B0671082A411B6Fa841
24 Oct 2026Payment address changed from 0x3A716f7Ca83109aE2dF332c718BAaE3528ce7beF to 0x4831184D8543CB763584A440F17056384f8D475B
24 Oct 2026Payment address changed from 0x25D5c813150B354Ac979b7243ADC027c4d76a845 to 0x3A716f7Ca83109aE2dF332c718BAaE3528ce7beF
23 Oct 2026Payment address changed from 0x82E6dCa553513d6E22466EBa2E1Befd6cA854eA7 to 0x25D5c813150B354Ac979b7243ADC027c4d76a845
23 Oct 2026Payment address changed from 0x3652c40E3373655558870BE7B762E930D50D17c8 to 0x82E6dCa553513d6E22466EBa2E1Befd6cA854eA7