🎨 Adobe Express API
Portal: developer.adobe.com/express
Auth: OAuth 2.0 / API Key
Status: 🟡 Adobe Developer Account erforderlich
Übersicht
Adobe Express API ermöglicht:
- Templates für Exposés erstellen
- Automatische Bildbearbeitung
- Social Media Content generieren
- Brand Kits verwalten
Use Cases für Immobilien
| Use Case |
Beschreibung |
| Exposé-Design |
Automatische Exposé-Erstellung aus Templates |
| Social Media |
Instagram/Facebook Posts für Listings |
| Bildoptimierung |
Immobilienfotos verbessern |
| Watermarks |
Makler-Logo auf Bilder |
Endpunkte
Templates
| Methode |
Endpunkt |
Beschreibung |
Cache TTL |
GET |
/api/adobe/templates |
Alle Templates |
1h |
GET |
/api/adobe/templates/:id |
Template Details |
1h |
POST |
/api/adobe/templates/:id/render |
Template rendern |
- |
Images
| Methode |
Endpunkt |
Beschreibung |
Cache TTL |
POST |
/api/adobe/images/remove-background |
Hintergrund entfernen |
- |
POST |
/api/adobe/images/enhance |
Bild verbessern |
- |
POST |
/api/adobe/images/resize |
Größe anpassen |
- |
POST |
/api/adobe/images/watermark |
Wasserzeichen hinzufügen |
- |
Quick Actions
| Methode |
Endpunkt |
Beschreibung |
Cache TTL |
POST |
/api/adobe/actions/crop |
Bild zuschneiden |
- |
POST |
/api/adobe/actions/convert |
Format konvertieren |
- |
POST |
/api/adobe/actions/compress |
Komprimieren |
- |
Export
| Methode |
Endpunkt |
Beschreibung |
Cache TTL |
POST |
/api/adobe/export/pdf |
Als PDF exportieren |
- |
POST |
/api/adobe/export/image |
Als Bild exportieren |
- |
Request-Beispiel
// Exposé aus Template generieren
const response = await fetch('/api/adobe/templates/expose-a4/render', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
variables: {
property_title: 'Moderne Villa mit Seeblick',
property_price: '1.250.000 €',
property_size: '280 m²',
property_rooms: '6 Zimmer',
property_location: 'Starnberg',
main_image: 'https://example.com/villa.jpg',
gallery: [
'https://example.com/img1.jpg',
'https://example.com/img2.jpg'
],
agent_name: 'Max Mustermann',
agent_phone: '+49 89 12345678',
company_logo: 'https://example.com/logo.png'
},
output: {
format: 'pdf',
quality: 'print', // 300dpi
colorMode: 'cmyk'
}
})
});
// Response
{
"jobId": "job-12345",
"status": "PROCESSING",
"estimatedTime": 30,
"resultUrl": null
}
// Poll for result
// GET /api/adobe/jobs/job-12345
{
"jobId": "job-12345",
"status": "COMPLETED",
"resultUrl": "https://cdn.adobe.com/result/expose.pdf",
"expiresAt": "2024-12-31T12:00:00Z"
}
TypeScript Types
interface AdobeTemplate {
id: string;
name: string;
category: 'expose' | 'flyer' | 'social' | 'banner';
dimensions: { width: number; height: number; unit: 'px' | 'mm' };
variables: AdobeTemplateVariable[];
thumbnail: string;
}
interface AdobeTemplateVariable {
name: string;
type: 'text' | 'image' | 'color' | 'number';
required: boolean;
default?: string;
constraints?: {
maxLength?: number;
minWidth?: number;
minHeight?: number;
};
}
interface AdobeRenderJob {
jobId: string;
status: 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED';
progress?: number;
resultUrl?: string;
error?: string;
createdAt: string;
completedAt?: string;
}
interface AdobeImageAction {
action: 'remove-background' | 'enhance' | 'resize' | 'watermark' | 'crop';
inputUrl: string;
options?: Record<string, unknown>;
}
Rate Limits
| Plan |
Renders/Monat |
Actions/Tag |
| Free |
25 |
100 |
| Pro |
500 |
2000 |
| Enterprise |
Unlimited |
Unlimited |
Adobe Developer Account erforderlich: developer.adobe.com