expiry-scan-label
/api/v1/expiry-scan-label
0 credits/call
expiry
Read the expiry date off a product-label photo via AI vision. Returns a suggestion for the caller to confirm/edit; does not save anything.
Sign in + create an API key on the keys page to authenticate calls.
curl -X POST https://rokom.ba/api/v1/expiry-scan-label \
-H "Authorization: Bearer mcpsk_<your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"image_base64": "",
"media_type": "image/jpeg"
}'
Add this server to Claude Desktop's claude_desktop_config.json. The endpoint becomes a callable tool inside Claude. See the MCP setup guide for the full walk-through.
{
"mcpServers": {
"this-api": {
"url": "https://rokom.ba/mcp",
"transport": "http",
"auth": {
"type": "bearer",
"token": "mcpsk_<your_api_key>"
}
}
}
}
Inside Claude this endpoint surfaces as the tool expiry-scan-label.
Standard requests — no custom SDK needed. pip install requests first.
import requests
r = requests.post(
"https://rokom.ba/api/v1/expiry-scan-label",
headers={"Authorization": "Bearer mcpsk_<your_api_key>"},
json={
"image_base64": "",
"media_type": "image/jpeg"
},
)
r.raise_for_status()
print(r.json())
Plain fetch. Works in Node 18+, Deno, Bun, and any modern browser.
const r = await fetch("https://rokom.ba/api/v1/expiry-scan-label", {
method: "POST",
headers: {
"Authorization": "Bearer mcpsk_<your_api_key>",
"Content-Type": "application/json",
},
body: JSON.stringify({
"image_base64": "",
"media_type": "image/jpeg"
}),
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
console.log(await r.json());
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| image_base64 | string | required | — |
Base64-encoded JPEG/PNG photo of the product label.
maxLength=8000000
|
| media_type | string | optional | image/jpeg |
pattern=^image/(jpeg|png)$
|
Output
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| product_name | string | optional | ||
| expiry_date | string | optional | ||
| best_before_flag | boolean | optional | False | |
| batch_lot | string | optional | ||
| needs_review | array<string> | optional | — | |
| plausible | boolean | optional | False |
Try it
Fires a real POST /api/v1/expiry-scan-label from your browser. Charges 0 credits per call against your account.