商品バッチの送信#
POST https://sdkapi.ideal.house/product-import/products
リクエスト本文#
| フィールド | 型 | 必須 | 制約 | 説明 |
|---|---|---|---|---|
shopId | string | はい | 最大 64 文字 | Ideal House が提供する Shop ID。 |
products | array | はい | 1~500 件 | 作成または更新する商品。 |
processImages | boolean | いいえ | 既定値は false | バッチ全体に適用されます。商品画像を処理するには true に設定します。省略するか false にすると、商品データをインポートし、画像は処理せず元の画像を使用します。 |
processFloorImages | boolean | いいえ | 既定値は false | processImages: true が必要です。床材商品の imageUrl から個々の床材板の画像を作成します。画像処理が無効な場合や、他の商品タイプでは無視されます。 |
processImages は、"true" や "false" のような文字列ではなく、JSON の真偽値(true または false)として送信してください。画像の前処理が必要な既存の連携では、今後は processImages: true を明示的に送信する必要があります。
商品フィールド#
| フィールド | 型 | 必須 | 最大長 | 説明 |
|---|---|---|---|---|
sku | string | はい | 120 | ショップ内で一意の商品識別子。同じ SKU を送ると既存の商品を更新します。 |
name | string | はい | 255 | 商品名。 |
imageUrl | string | はい | 1,000 | 元の商品画像の、公開アクセス可能な HTTP または HTTPS の URL。 |
productUrl | string | はい | 1,000 | 商品詳細ページの HTTP または HTTPS の URL。 |
width | string or number | はい | 64 | 商品の幅。単位なしの値はインチとして扱い、対応する単位はインチに変換します。 |
length | string or number | いいえ | 64 | 商品の長さ。床材商品では height の代わりに指定でき、床材板の長さとして使用します。 |
height | string or number | 条件付き | 64 | 商品の高さ。床材商品で length を指定する場合を除き必須です。単位なしの値はインチとして扱います。 |
thickness | string or number | いいえ | 64 | 商品の厚さ、または厚さの範囲。指定された値はインチに変換します。 |
dimension_display | string | いいえ | 120 | "24 in x 36 in" や "26 cm x 36 cm" などの、表示専用の寸法テキスト。 |
category | string | いいえ | 120 | カタログ内の商品カテゴリ。 |
color | string | いいえ | 120 | 商品の色。 |
brand | string | いいえ | 120 | 商品のブランド。 |
productType | string | はい | 120 | 下記の対応商品タイプ名のいずれか。 |
status | string | いいえ | — | active、inactive、out_of_stock、invalid のいずれか。既定値は active です。 |
groupId | string | いいえ | 120 | 関連商品をグループ化するために顧客が定義する識別子。 |
既存商品の再インポート#
商品データを更新するには、POST /product-import/products を通じて商品を再度送信します。商品は shopId と sku によって照合されます。同じ SKU がショップに存在する場合は、重複を作成せずに既存の商品レコードを更新します。最新のインポートで指定した値は、name、商品の URLs、ステータス、寸法など、対応する保存済みの値を上書きします。
バッチインポートのエンドポイントは部分更新用ではありません。SKU がすでに存在していても、送信する各商品は必須フィールドのすべての規則を満たす必要があります。
SKU はインポート時の識別子であり、再インポートによって変更することはできません。異なる SKU を送信すると、別の商品を作成または更新します。SKU を置き換えるには、古い商品を論理削除し、新しい SKU で商品をインポートしてください。
画像が変わっていなくても商品情報は更新されます。画像処理は送信ごとに任意で指定できます。必要に応じて processImages: true を設定してください。画像処理なしでインポートした商品も、このオプションを有効にして再送信できます。
対応する商品タイプ#
API は、以下の大文字と小文字を区別する正確な productType 値を受け付けます。同じ行に複数の名前がある場合、それらは同じ Ideal House 商品タイプの別名です。
| Ideal House の商品タイプ | 使用可能な productType の値 |
|---|---|
| 壁紙 | "Wall"、"Wallpaper" |
| ラグ | "Rugs"、"Area Rugs"、"Area Rug" |
| ウォールアート | "Wall Art" |
| 家具 | "Furniture" |
| 壁画 | "Mural"、"Wall Mural" |
| 装飾ステッカー | "Decals" |
| 床材 | "Floor" |
たとえば、"Rugs"、"Area Rugs"、"Area Rug" はすべて有効で、同じ商品タイプとして扱われます。上記以外の値を指定すると 400 Bad Request が返されます。
インポート時のステータス#
任意の status フィールドは、以下の正確な値を受け付けます。
| 値 | 意味 |
|---|---|
active | 商品と画像をインポートします。画像処理が必要な場合は processImages: true を設定してください。status を省略すると、この値が既定で使用されます。 |
inactive | 処理をスキップします。商品は status: inactive および availability: inactive で保存されます。 |
out_of_stock | 処理をスキップします。商品は status: inactive および availability: out_of_stock で保存されます。 |
invalid | 処理をスキップします。商品は status: invalid および availability: invalid で保存されます。 |
sold_out を含め、その他の値では 400 Bad Request が返されます。
家具では、非アクティブとして送信した場合、商品の status: inactive が返されます。アクティブとして送信しても unprocessed が返されることがあり、これは商品がまだ表示可能な状態ではないことを意味します。3D 生成をリクエストしたという意味ではありません。
家具の 3D モデル生成#
家具の 3D モデル生成には時間とクレジットが必要なため、processImages が true でも商品インポート中には実行されません。今後、ユーザーインターフェースでの生成操作、または独立した 3D 生成 API を提供する予定です。今すぐ 3D モデルが必要な場合は、Ideal House の担当者にメールでご連絡ください。生成を別途手配します。
SKU と更新動作#
Ideal House は shopId と sku の組み合わせで商品を識別します。
- ショップに SKU が存在しない場合、新しい商品を作成します。
- ショップに SKU がすでに存在する場合、既存の商品を更新します。
このため、ネットワークの結果が不明な場合も、同じ SKU で安全に商品を再送信できます。固定の SKUs を使用し、同じ商品の再試行で新しい SKU を生成しないでください。同じバッチ内で同一の SKU を複数回送信しないでください。
画像の要件#
- URL は、Cookie、ログインセッション、独自のリクエストヘッダーなしで Ideal House のサーバーからアクセスできる必要があります。
- 画像を直接返す安定した URL を使用してください。
- インポートジョブが終端ステータスに達するまで、元の画像をアクセス可能な状態にしてください。
- 画像のダウンロードや処理の問題は、商品ごとの失敗として報告されます。
- 床材板の画像を作成するには、
processImages: trueとprocessFloorImages: trueの両方を設定してください。
任意の画像処理とクレジット#
画像の前処理は既定で無効です。
processImages: falseを指定するかフィールドを省略すると、アクティブな商品には元の画像を使用し、背景除去、テクスチャ最適化、床材画像の分割は行いません。商品情報は引き続きインポートまたは更新され、画像処理のクレジットは請求されません。非アクティブな商品には、上記のステータス規則が適用されます。processImages: trueを指定すると、対応するアクティブな商品に以下の画像処理を行います。家具の 3D 生成は含まれません。
主な処理動作は次のとおりです。
| API の商品タイプ | 画像処理 |
|---|---|
Wall、Wallpaper | 外側の白い余白を除去し、照明のむらや影を軽減して、繰り返し敷き詰めたときの見栄えを改善します。背景は不透明のままです。完全につなぎ目のないテクスチャや遠近の補正は保証しません。 |
Rugs、Area Rugs、Area Rug | 白や淡色のラグの模様を保持しつつ、白い背景と周囲の影を除去します。輪郭を整えてなじませ、空白の余白を切り取り、背景が透明な商品画像を作成します。 |
Wall Art(壁面装飾) | 額入りアートや不規則な形の壁面装飾から周囲の背景を除去します。通常のアート作品内の白い部分は保持し、空白の余白を切り取って背景が透明な商品画像を作成します。 |
Mural と Wall Mural には壁紙と同じ画像改善を適用します。最良の結果を得るには、商品全体が写った鮮明な画像を使用してください。ラグと通常のウォールアートには白または白に近い背景を使用し、壁紙の画像では極端な遠近の歪みを避けてください。
上記の画像処理には、壁紙のテクスチャ最適化を含め、新しく処理する画像ごとに 1 クレジットが必要です。既存の処理済み結果を利用できる場合、追加の処理クレジットは請求されません。このオプションを有効にする前に、十分なクレジットを確保してください。クレジットが不足していると画像処理は進まず、商品が unprocessed のままになることがあります。インポートバッチが completed であることだけでは、すべての商品画像の処理成功を確認できません。
寸法の要件#
API には独立した寸法単位フィールドはありません。width は必須です。通常は height も必須ですが、床材商品では代わりに length を指定できます。両方ある場合は length を床材板の長さとして使用します。単位なしの数値と数値文字列はインチとして扱います。文字列には in、ft、cm、mm、m を含められます。値が正の寸法であることを検証し、保存前にインチに統一します。thickness は任意で、"3-4 mm" のような範囲も受け付け、"0.1-0.2 in" に統一します。
dimension_display は任意の表示ラベルで、サイズの検証や単位変換には使用しません。"24 in x 36 in" や "26 cm x 36 cm" など、顧客に表示したい単位や形式を使用できます。
リクエスト例#
{
"shopId": "shop_123",
"processImages": false,
"processFloorImages": false,
"products": [
{
"sku": "SKU-10001",
"name": "Gold Wall Mirror",
"imageUrl": "https://cdn.example.com/products/SKU-10001.png",
"productUrl": "https://www.example.com/products/SKU-10001",
"width": "24.0 in",
"height": "36.0 in",
"thickness": "2.0 in",
"dimension_display": "24 in x 36 in",
"category": "Mirror",
"color": "Gold",
"brand": "Example Brand",
"productType": "Wall Art",
"status": "active",
"groupId": "mirror-series-01"
},
{
"sku": "SKU-10002",
"name": "Black Wall Mirror",
"imageUrl": "https://cdn.example.com/products/SKU-10002.png",
"productUrl": "https://www.example.com/products/SKU-10002",
"width": "2 ft",
"height": "3 ft",
"thickness": "3-4 mm",
"dimension_display": "2 ft x 3 ft",
"category": "Mirror",
"color": "Black",
"brand": "Example Brand",
"productType": "Wall Art",
"status": "out_of_stock",
"groupId": "mirror-series-01"
}
]
}
cURL の例(画像処理を有効化)#
この例では画像の前処理を明示的に有効にしています。新しい背景除去の結果には 1 クレジットが必要です。
curl --request POST \
'https://sdkapi.ideal.house/product-import/products' \
--header 'Content-Type: application/json' \
--header 'X-Client-Id: <YOUR_CLIENT_ID>' \
--header 'X-Client-Secret: <YOUR_CLIENT_SECRET>' \
--data-raw '{
"shopId": "shop_123",
"processImages": true,
"products": [
{
"sku": "SKU-10001",
"name": "Gold Wall Mirror",
"imageUrl": "https://cdn.example.com/products/SKU-10001.png",
"productUrl": "https://www.example.com/products/SKU-10001",
"width": 24,
"height": 36,
"thickness": 2,
"dimension_display": "24 in x 36 in",
"category": "Mirror",
"color": "Gold",
"brand": "Example Brand",
"productType": "Wall Art",
"status": "active",
"groupId": "mirror-series-01"
}
]
}'
受付時のレスポンス#
有効なリクエストには 202 Accepted が返されます。処理は非同期で続行します。
{
"jobId": "1930000000000000000",
"shopId": "shop_123",
"status": "pending",
"totalCount": 1,
"processedCount": 0,
"successCount": 0,
"failedCount": 0,
"failures": [],
"createdAt": "2026-07-21T06:30:00.000Z",
"startedAt": null,
"updatedAt": "2026-07-21T06:30:00.000Z",
"completedAt": null,
"error": null
}
ショップに pending または running のジョブがすでにある場合、API は 409 Conflict を返します。現在のジョブが終了するまで待ってから、次のバッチを送信してください。