REST API v1

img2htm API 文件

一次 API 呼叫,將圖片變成正式環境等級的 HTML
img2htm API 接收圖片檔案或 URL,回傳 HTML、CSS、分離圖片、結構化 JSON 與品質報告。

快速開始

img2htm API 接收圖片檔案或 URL,回傳 HTML、CSS、分離圖片、結構化 JSON 與品質報告。 每月前 50 次預覽呼叫免費。

  1. 建立帳戶 → 在控制台建立金鑰
  2. POST https://img2htm.com/api/v1/reconstruct with image_file, image_url or image_file_b64.
  3. Receive HTML, CSS, separated assets, structured JSON and a quality report in one response.

輕鬆整合

提供 cURL、Node.js、Python、PHP、Ruby、Java、.NET 與 Swift 範例。

HTML + CSS + JSON

一次 API 呼叫即可取得 HTML、CSS、分離圖片、結構化 JSON 與品質報告。

什麼是點數?

1 點可完整轉換一張垂直不超過 15,000 px 的圖片。更長的圖片會自動按多個點數計算。預覽免費。

身分驗證

透過 Authorization: Bearer 標頭或 X-Api-Key 標頭傳送您的 API 金鑰。

Authorization: Bearer i2h_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# or
X-Api-Key: i2h_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

範例程式碼

curl -X POST https://img2htm.com/api/v1/reconstruct \
  -H "Authorization: Bearer i2h_your_api_key" \
  -F "image_file=@product-page.jpg" \
  -F "mode=full" \
  -F "format=json"

輸出格式

format說明
jsonDefault. JSON object with html, css, content (structured sections + texts), assets (separated image URLs), quality and urls.
htmlReturns the reconstructed index.html document directly (text/html).
zipStreams a ZIP with index.html, styles.css, content.json, quality.json, sections/ and assets/.

回應

{
  "id": "3f9a1c2b7d4e6f80a1b2",
  "status": "done",
  "mode": "full",
  "credits_used": 2,
  "width": 860,
  "height": 24000,
  "sections": 16,
  "quality": {
    "text_accuracy": 97.4,
    "visual_fidelity": 94.1,
    "structure": 95.2,
    "sections": 16,
    "seconds": 41.8,
    "provider": "anthropic:claude-sonnet-5",
    "review": [],
    "auto_pass": true
  },
  "urls": {
    "html": "https://img2htm.com/api/v1/jobs/3f9a1c2b7d4e6f80a1b2/html",
    "zip": "https://img2htm.com/en/convert/3f9a1c2b7d4e6f80a1b2/download",
    "preview": "https://img2htm.com/en/convert/3f9a1c2b7d4e6f80a1b2/preview"
  },
  "assets": ["https://img2htm.com/files/results/3f9a1c2b7d4e6f80a1b2/assets/s01-a01.png"],
  "html": "<!DOCTYPE html> ...",
  "css": "/* img2htm base styles */ ...",
  "content": { "sections": [ ... ], "texts": [ ... ] }
}

API 參考

Reconstruct an image

POST/api/v1/reconstruct
參數類型說明
image_file 必填*fileMultipart upload. JPG, PNG or WebP, up to 25 MB. *One of image_file, image_url, image_file_b64 is required.
image_urlstringPublic HTTP(S) URL of the image.
image_file_b64stringBase64-encoded image data.
mode 選填full | previewfull (default) converts the whole image and charges 1 credit per 15,000 vertical px. preview converts only the top 3,000 px for free.
lang 選填stringOutput document language tag: ko, en, cn, tw, ja, mn, ru, th, id, vi, ar. Text is kept in its source language; this sets <html lang>/dir.
format 選填json | html | zipResponse format (see above).
async 選填1Deprecated (always asynchronous): POST /reconstruct returns 202 Accepted with status: processing and a poll URL; poll GET /api/v1/jobs/{id} every 30–60 s until status: done (typically 30–45 min).

Get a job

GET/api/v1/jobs/{id}

Returns the job object. Add ?include_html=1 to embed html, css and content.

Get the HTML document

GET/api/v1/jobs/{id}/html

Returns index.html as text/html.

Account

GET/api/v1/account
{ "email": "you@example.com", "credits": 38, "pixels_per_credit": 15000, "key": "i2h_ab12cd34…", "calls": 1207 }

Image generation API

Text-to-image, image variations and rendered translation (the image is redrawn with its text translated). All asynchronous; results are returned as absolute image URLs and can be chained straight into HTML reconstruction.

1) POST /api/v1/images/variations   → 202 { "jobs":[{ "id":"…", "status":"processing", "poll":"…" }] }
2) GET  /api/v1/images/{id}          → { "status":"processing" }   (poll every 3–5 s, usually 40–90 s)
3) GET  /api/v1/images/{id}          → { "status":"done", "images":["https://img2htm.com/files/generated/….jpg"] }
4) POST /api/v1/images/{id}/reconstruct → 202 HTML reconstruction job (poll GET /api/v1/jobs/{id})

Text → image

POST/api/v1/images/generate
參數類型說明
prompt 必填stringGeneration prompt (any language).
count1–4Number of images (one job each). Default 1.
ratioauto 1:1 4:3 3:4 16:9 9:16Aspect ratio. Default auto.
resolution1K 2K 4KDefault 2K.
curl -X POST https://img2htm.com/api/v1/images/generate \
  -H "Authorization: Bearer i2h_your_api_key" -H "Content-Type: application/json" \
  -d '{"prompt":"Minimal skincare product hero shot on white marble, studio light","ratio":"1:1","resolution":"2K"}'

Image → variations

POST/api/v1/images/variations
參數類型說明
image_file / image_url / image_file_b64file | stringSource image (one of these, or source_id / job_id).
source_idstringId of a finished image job (optionally id#index) — chain variations of variations.
job_idstringId of a reconstruction job — reuse the image you already uploaded.
promptstringOptional instruction; the default keeps the product and style and changes composition/background.
count, ratio, resolutionSame as generate.
curl -X POST https://img2htm.com/api/v1/images/variations \
  -H "Authorization: Bearer i2h_your_api_key" \
  -F "image_file=@product.jpg" -F "count=2" -F "prompt=same product, night beach background"

Image translation (rendered)

POST/api/v1/images/translate

Re-renders the image with every visible text translated into lang (layout, colours and product photos are preserved). Same source parameters as variations plus:

參數類型說明
lang 必填stringTarget language: en ko ja cn tw vi th id ru mn ar es fr de pt it hi tr ms tl (see GET /api/v1/translate/languages).
curl -X POST https://img2htm.com/api/v1/images/translate \
  -H "Authorization: Bearer i2h_your_api_key" -H "Content-Type: application/json" \
  -d '{"image_url":"https://example.com/detail-ko.jpg","lang":"ja"}'

Get / list image jobs

GET/api/v1/images/{id}
GET/api/v1/images?status=done&kind=variation&limit=50&page=1
{
  "ok": true, "id": "9c1f…", "kind": "variation", "status": "done", "progress": 100,
  "prompt": "same product, night beach background", "ratio": "auto", "resolution": "2K",
  "images": ["https://img2htm.com/files/generated/9c1f…-1.jpg"], "gen_seconds": 71.3,
  "credits_used": 0, "created_at": "2026-09-04 13:20:11", "finished_at": "2026-09-04 13:21:30",
  "poll": "https://img2htm.com/api/v1/images/9c1f…"
}

status: pending → processing → done | failed (error holds the reason; credits are refunded).

Generated image → HTML

POST/api/v1/images/{id}/reconstruct

Creates a reconstruction job from a finished image (index selects the image, default 0; mode full|preview; lang as in /reconstruct). Returns 202 with the job id — poll GET /api/v1/jobs/{id} like any reconstruction.

Translation · OCR API

Gemini-powered text translation and image OCR (+translation). Synchronous, responds within seconds.

Text translation

POST/api/v1/translate
參數類型說明
text or textsstring | string[]One text, or up to 500 strings (max 60,000 characters per request).
target_lang 必填stringTarget language code.
source_langstringOptional; auto-detected by default.
curl -X POST https://img2htm.com/api/v1/translate \
  -H "Authorization: Bearer i2h_your_api_key" -H "Content-Type: application/json" \
  -d '{"text":"리뷰티 스튜디오는 이미지 생성 API를 제공합니다.","target_lang":"en"}'
# → { "ok":true, "target_lang":"en", "model":"gemini-…", "translation":"Rebeauty Studio provides an image generation API." }

Image OCR (+ translation)

POST/api/v1/ocr
參數類型說明
image_file / image_url / image_file_b64 必填file | stringImage to read.
translate_tostringOptional target language: returns text (original) and translation.
curl -X POST https://img2htm.com/api/v1/ocr -H "Authorization: Bearer i2h_your_api_key" \
  -F "image_file=@banner.png" -F "translate_to=en"
# → { "ok":true, "text":"…extracted…", "translation":"…" }
GET/api/v1/translate/languages

Supported language codes and names.

速率限制

每分鐘 60 張圖片 per API key. When exceeded the API responds 429 Too Many Requests with a Retry-After: 60 header. Enterprise plans can raise this limit.

指數退避

On 429 or 5xx, retry with exponential backoff: wait 1s, 2s, 4s, 8s … up to 5 attempts, adding random jitter. Never retry 4xx errors other than 429.

delay = min(60, (2 ** attempt) + random(0, 1))

錯誤代碼

HTTP說明
400Missing image or unreadable URL.
401Missing, invalid or revoked API key.
402Insufficient credits. Response includes credits_needed and credits_available.
413File exceeds the upload limit.
415Unsupported image type.
429Rate limit exceeded.
500Conversion failed. Credits charged for the job are refunded automatically; error contains the reason.

函式庫與工具

API 更新日誌

API 更新日誌

找回被困在像素中的網頁

註冊即送免費點數,無需信用卡。