الأداتان تأخذان الملف بصيغة multipart/form-data.
تحسين الصور
POST /photo/enhance: النطاق tools:photo، مهمة. صورة واحدة لكل طلب.
أجزاء النموذج:
| الجزء | الوصف |
|---|---|
image | الصورة: إلزامي؛ JPEG أو PNG أو WebP حتى 25 ميغابايت |
mask | لـ cleanup فقط: قناع PNG، والأبيض يحدد المنطقة المراد تغييرها |
data | الخيارات سلسلة JSON واحدة: إلزامي |
الخيارات في data:
| الحقل | الوصف |
|---|---|
mode | enhance: الإضاءة واللون والحدة؛ cleanup: إزالة الأشياء؛ staging: تأثيث غرفة فارغة. الافتراضي cleanup |
prompt | إلزامي لـ cleanup وstaging (من 3 إلى 500 حرف): ما الذي يُزال أو كيف يُؤثث؛ اختياري لـ enhance |
intensity | light، medium (افتراضي)، strong |
roomType | living، bedroom، kitchen، bathroom، dining، office، outdoor |
furnitureStyle | لـ staging: modern، scandinavian، industrial، luxury، minimalist، coastal |
autoMask | cleanup دون قناع خاص: إيجاد المنطقة تلقائيا |
seed | رقم لنتيجة قابلة للتكرار |
negativePrompt | ما يجب تجنبه، حتى 300 حرف |
objectId، objectType | عقارك الذي تنتمي إليه الصورة (property أو complex) |
curl -X POST https://developers.grem.capital/api/v1/photo/enhance \
-H "Authorization: Bearer gsk_live_xxx" \
-F 'data={"mode":"cleanup","prompt":"أزل الكرسي والصناديق"}' \
-F "[email protected]"
القناع مع enhance أو staging يُرفض: لا أثر له هناك، ولا يُخصم شيء. السعر يعتمد على الوضع. حالات الرفض: القناع خارج cleanup يعطي 422 مع code: MASK_NOT_SUPPORTED؛ ونوع ملف آخر أو ملف أكبر من 25 ميغابايت يعطي 422 مع code: JOB_CREATE_FAILED؛ ومفتاح غير معروف في data يعطي 400. ويحمل رد البدء sku وpriceMinor: ما يُخصم مقابل الاستدعاء (يغيب إذا غطته حصة الخطة).
202 مع jobId. المهمة المنتهية (GET /photo/enhance/jobs/{id}):
| الحقل | الوصف |
|---|---|
results | نسخ النتيجة |
results[].variant | رقم النسخة |
results[].url | عنوان الصورة |
results[].width، results[].height | الحجم |
metadata.error | في المهمة الفاشلة: السبب بنص عام |
ملف النسخة: GET /artifacts/v1/ai/photo-enhancement/jobs/{jobId}/download/{variant}. الأحداث: photo.completed / photo.failed.
تنظيف المخطط
POST /floorplan/create: النطاق tools:floorplan. صورة المخطط أو مسحه الضوئي تتحول إلى مخطط نظيف بأسماء الغرف ومساحاتها. تتم المعالجة فورا: رد 202 يحمل النتيجة.
| الجزء | الوصف |
|---|---|
file | صورة المخطط (JPEG، PNG، WebP، HEIC؛ حتى 20 ميغابايت): إلزامي؛ ويُقبل الاسم image أيضا |
objectId | إرفاق النتيجة بعقارك |
objectType | property أو rental أو complex |
curl -X POST https://developers.grem.capital/api/v1/floorplan/create \
-H "Authorization: Bearer gsk_live_xxx" \
-F "[email protected]"
الرد:
| الحقل | الوصف |
|---|---|
jobId | معرّف المهمة |
status | done: قُبلت الأسماء تلقائيا؛ review: النتيجة جاهزة ويُستحسن مراجعة الأسماء؛ rejected: الصورة ليست مخططا؛ failed: عطل |
state | completed لـ done وreview، وfailed لـ rejected وfailed |
rooms | الغرف: label وarea (م²، إن كانت مكتوبة) وstable (قُرئت التسمية بالشكل نفسه في كل مرور) وplacement (موضع التسمية على المخطط النظيف) |
totalArea | المساحة الإجمالية، م²، إن كانت المساحات مكتوبة على المخطط |
cleanedFileId | صورة المخطط النظيف |
sourceFileId | المخطط الذي رفعته |
التقرير: GET /artifacts/v1/ai/floor-plan/jobs/{id}/report.pdf. جلب النتيجة مجددا: GET /floorplan/create/jobs/{id}. الأحداث: floorplan.completed / floorplan.failed. إذا لم تكن الصورة مخططا فلا يُخصم شيء.