Documentation Index Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
Use this file to discover all available pages before exploring further.
Playground dokumentasi tidak mendukung unggah file : Silakan gunakan contoh kode cURL, Python, atau JavaScript di bawah ini untuk menguji.
Perubahan Penting: Untuk performa dan kontrol biaya yang lebih baik, kami tidak lagi mendukung pengiriman data gambar base64 secara langsung di API pembuatan. Gunakan API ini untuk mengunggah gambar, mendapatkan URL, lalu memanggil API pembuatan.
Mengapa mengunggah gambar terlebih dahulu?
Optimasi Performa - encoding base64 memperbesar data sebesar 33%; mengunggah terlebih dahulu secara signifikan mengurangi ukuran body permintaan
Gunakan Ulang Gambar - Unggah sekali, gunakan URL berkali-kali tanpa transfer berulang
Alur Kerja
curl --request POST \
--url https://api.apimart.ai/v1/uploads/images \
--header 'Authorization: Bearer <token>' \
--form 'file=@/path/to/your/image.jpg'
200
400 - Missing File Field
400 - Unsupported Format
413 - File Too Large
429 - Rate Limit Exceeded
500 - Upload Failed
{
"url" : "https://upload.apimart.ai/f/image/9990000123456-a1b2c3d4-photo.jpg" ,
"filename" : "photo.jpg" ,
"content_type" : "image/jpeg" ,
"bytes" : 235680 ,
"created_at" : 1743436800
}
Otorisasi
Semua API memerlukan autentikasi Bearer Token Dapatkan API Key: Kunjungi Halaman Manajemen API Key untuk mendapatkan API Key Anda Tambahkan ke header request: Authorization: Bearer YOUR_API_KEY
Body
File gambar Format yang didukung: JPEG (.jpg, .jpeg), PNG (.png), WebP (.webp), GIF (.gif) Ukuran file maksimum: 20MB
Response
URL akses publik untuk gambar, dapat digunakan secara langsung di API pembuatan (berlaku selama 72 jam)
Tipe MIME yang terdeteksi, misal image/jpeg
Waktu unggah sebagai Unix timestamp (detik)
Contoh Lengkap: Alur Kerja Gambar-ke-Gambar
import requests
import time
API_KEY = "your-Apimart-key"
BASE_URL = "https://api.apimart.ai"
# Step 1: Upload reference image
def upload_image ( file_path ):
with open (file_path, 'rb' ) as f:
response = requests.post(
f " { BASE_URL } /v1/uploads/images" ,
headers = { "Authorization" : f "Bearer { API_KEY } " },
files = { "file" : f}
)
return response.json()[ 'url' ]
# Step 2: Create generation task
def create_generation ( image_url , prompt ):
response = requests.post(
f " { BASE_URL } /v1/images/generations" ,
headers = {
"Authorization" : f "Bearer { API_KEY } " ,
"Content-Type" : "application/json"
},
json = {
"model" : "gemini-3-pro-image-preview" ,
"prompt" : prompt,
"image_urls" : [{ "url" : image_url}],
"size" : "16:9"
}
)
return response.json()[ 'id' ]
# Step 3: Poll task status
def wait_for_result ( task_id ):
while True :
response = requests.get(
f " { BASE_URL } /v1/images/generations/ { task_id } " ,
headers = { "Authorization" : f "Bearer { API_KEY } " }
)
result = response.json()
if result[ 'status' ] == 'completed' :
return result[ 'url' ]
elif result[ 'status' ] == 'failed' :
raise Exception ( f "Generation failed: { result.get( 'fail_reason' ) } " )
time.sleep( 2 )
# Execute workflow
image_url = upload_image( "reference.jpg" )
print ( f "Image uploaded: { image_url } " )
task_id = create_generation(image_url, "Transform this photo into Ghibli anime style" )
print ( f "Task created: { task_id } " )
result_url = wait_for_result(task_id)
print ( f "Generation complete: { result_url } " )