Skip to content

GET /api/amazon/imageurl

批量构造 Amazon 图片完整链接

https://m.media-amazon.com/images/I/{文件名}

文件名来自 Keepa 系列接口返回的 imagesCSV / images[].l / images[].m / swatchImage 字段(如 41aH4MDfVBL.jpg)。

该接口仅做本地拼接,不调用任何上游 API。图片 CDN 全球统一,生成的 URL 与站点无关(country 仅保持接口形态一致)。

接口

GET https://mcp.keepamore.com/api/amazon/imageurl

计费

项目units
任意调用0(免费)

该接口免费(0 units),但仍然需要携带合法的 API Key 完成鉴权。

参数(Query String)

名称类型必填默认约束说明
domaininteger✅¹1–12站点 ID,参见 domain 映射。也可用 domainId / country 别名
imagestring✅²合法文件名单个图片文件名,如 41aH4MDfVBL.jpg
imagesstring[] / csv✅²最多 1000 个文件名列表。可写 ?images=A,B 或多次 ?images=A&images=B

¹ domain / domainId / country 三选一;同时传入时若不一致会返回 400。 ² imageimages 至少传一个;同时传入时合并去重。

响应

json
{
	"code": "0000",
	"msg": "ok",
	"data": {
		"country": "us",
		"count": 2,
		"items": [
			{
				"image": "41aH4MDfVBL.jpg",
				"url": "https://m.media-amazon.com/images/I/41aH4MDfVBL.jpg"
			},
			{
				"image": "019WF1juxGL.jpg",
				"url": "https://m.media-amazon.com/images/I/019WF1juxGL.jpg"
			}
		]
	}
}

示例

bash
# 请将 km_xxx 替换为你的 API Key
# 1) 单个图片
curl "https://mcp.keepamore.com/api/amazon/imageurl?domain=1&image=41aH4MDfVBL.jpg" \
  -H "X-API-Key: km_xxx"

# 2) 批量(逗号分隔)
curl "https://mcp.keepamore.com/api/amazon/imageurl?domain=1&images=41aH4MDfVBL.jpg,019WF1juxGL.jpg" \
  -H "X-API-Key: km_xxx"
js
// 请将 km_xxx 替换为你的 API Key
const URL = "https://mcp.keepamore.com/api/amazon/imageurl";
const HEADERS = { "X-API-Key": "km_xxx" };

// 1) 单个图片
const r1 = await fetch(`${URL}?domain=1&image=41aH4MDfVBL.jpg`, { headers: HEADERS });
console.log(await r1.json());

// 2) 批量(多次 ?images= 写法)
const params = new URLSearchParams({ domain: "1" });
["41aH4MDfVBL.jpg", "019WF1juxGL.jpg"].forEach((i) => params.append("images", i));
const r2 = await fetch(`${URL}?${params}`, { headers: HEADERS });
console.log(await r2.json());
python
# 请将 km_xxx 替换为你的 API Key
import requests

URL = "https://mcp.keepamore.com/api/amazon/imageurl"
HEADERS = {"X-API-Key": "km_xxx"}

# 1) 单个图片
r1 = requests.get(URL, params={"domain": 1, "image": "41aH4MDfVBL.jpg"},
                  headers=HEADERS, timeout=30)
print(r1.json())

# 2) 批量(重复 key 的写法)
r2 = requests.get(URL,
                  params=[("domain", 1), ("images", "41aH4MDfVBL.jpg"), ("images", "019WF1juxGL.jpg")],
                  headers=HEADERS, timeout=30)
print(r2.json())
php
<?php
// 请将 km_xxx 替换为你的 API Key
require 'vendor/autoload.php';
use GuzzleHttp\Client;

$client = new Client();
$resp = $client->get('https://mcp.keepamore.com/api/amazon/imageurl', [
    'headers' => ['X-API-Key' => 'km_xxx'],
    // Guzzle 会把数组展开为 ?images=A&images=B
    'query'   => ['domain' => 1, 'images' => ['41aH4MDfVBL.jpg', '019WF1juxGL.jpg']],
    'timeout' => 30,
]);
echo $resp->getBody();
java
// 请将 km_xxx 替换为你的 API Key(Java 11+ 标准库)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://mcp.keepamore.com/api/amazon/imageurl?domain=1&images=41aH4MDfVBL.jpg,019WF1juxGL.jpg"))
    .header("X-API-Key", "km_xxx")
    .timeout(Duration.ofSeconds(30))
    .GET()
    .build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
go
// 请将 km_xxx 替换为你的 API Key(Go 标准库 net/http)
package main

import (
    "fmt"
    "io"
    "net/http"
    "time"
)

func main() {
    url := "https://mcp.keepamore.com/api/amazon/imageurl?domain=1&images=41aH4MDfVBL.jpg,019WF1juxGL.jpg"
    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Set("X-API-Key", "km_xxx")

    client := &http.Client{Timeout: 30 * time.Second}
    resp, err := client.Do(req)
    if err != nil { panic(err) }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}

错误处理

通用错误码定义见 错误码总览。常见情况:

  • 缺少 image / images、数量超过 1000 → HTTP 400
  • 文件名格式不合法(含路径、非图片扩展名)→ HTTP 400
  • domain / country 同时传入但不一致 → HTTP 400