AIX
AIXpose API

Technisch overzicht voor product- en engineeringteams.

Gebruik deze pagina om de structuur van de AIXpose REST API te begrijpen. Bij contact bespreken we API-afspraak, integratiescope, authenticatie, limieten en productie-eisen.

Architecture preview

REST resources, async jobs and webhook callbacks.

Create projects, upload source photos, request enhancements or videos, then receive status updates and CDN-ready outputs when processing completes.

  1. 1

    Create a project for the property or listing.

  2. 2

    Upload source photos and request one or more generated variants.

  3. 3

    Poll status or subscribe to signed webhook events.

  4. 4

    Approve the best picture version and optionally generate a short video.

  5. 5

    Publish the project or sync CDN-ready media into your product.

Core concepts

The objects you will work with

These are the main concepts to plan against when designing a CRM, portal, automation workflow or media pipeline integration.

Organization

Your tenant for projects, credits, preferences, branding and API access.

Project

A listing, property or campaign that groups photos, generated assets and shared output defaults.

Picture

An original upload or generated derivative with status, public URL, version information and feedback.

Video

A short property reel generated from approved pictures, scene context and optional audio direction.

Instruction

The public generation recipe behind an enhancement: preset actions, custom prompts, quick actions or consistency goals.

Agent

An optional learning mode that can apply approved visual preferences automatically on future uploads.

Resourcekaart

Wat mogelijk is via de API

Gebruik deze kaart als gids voor integratiebouwstenen: projecten bundelen listingcontext, beelden en video’s zijn gegenereerde media, catalogi voeden UI-keuzes, webhooks leveren jobupdates en credits helpen gebruik afstemmen.

Projects

Create and manage listing-level workspaces for pictures, videos, defaults and review flows.

POST /v1/projects GET /v1/projects/{project_id} POST /v1/projects/{project_id}/publish

Pictures

Create pictures inside a project and request enhanced versions for staging, renovation, decluttering or exterior improvement.

POST /v1/projects/{project_id}/pictures POST /v1/pictures/{picture_id}/enhancements GET /v1/projects/{project_id}/pictures

Videos

Generate short listing reels from approved media, scene context and optional voice or background direction.

POST /v1/videos GET /v1/videos/{video_id} GET /v1/videos?project_id=...

Catalog

Populate your UI controls with supported models, output formats, scene types and action groups.

GET /v1/catalog/models GET /v1/catalog/actions GET /v1/catalog/aspect-ratios

Agent and quick actions

Use reusable prompts and learned preferences without exposing internal generation pipelines.

GET /v1/agent PATCH /v1/agent GET /v1/quick-actions

Credits and webhooks

Track consumption, reconcile generated assets and receive asynchronous status changes.

GET /v1/credits/balance GET /v1/credits/ledger Signed webhook events
Example snippets

Developer examples

These snippets show common integration patterns. Contact us to discuss your API agreement, integration details and production requirements.

Example 1

Create a project

Create a project for one listing, property or campaign.

JavaScript / fetch Preview
const project = await fetch('https://api.aixpose.art/v1/projects', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer aix_live_partner_key',
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID()
  },
  body: JSON.stringify({
    name: 'Gdynia apartment campaign',
    output: 'picture',
    picture_aspect_ratio: '16:9',
    picture_resolution: '2K'
  })
}).then((res) => res.json());

console.log(project.id);

Example 2

Upload an image from a URL

Use this when your image already exists in a CRM, DAM or storage bucket.

JavaScript / JSON URL Preview
const projectId = 'prj_123';

const picture = await fetch(
  `https://api.aixpose.art/v1/projects/${projectId}/pictures`,
  {
    method: 'POST',
    headers: {
      Authorization: 'Bearer aix_live_partner_key',
      'Content-Type': 'application/json',
      'Idempotency-Key': crypto.randomUUID()
    },
    body: JSON.stringify({
      source: {
        type: 'url',
        url: 'https://cdn.example.com/listings/4812/living-room.jpg'
      },
      scene_type: 'interior',
      scene_location: 'living_room',
      webhook_url: 'https://partner.example/aixpose/webhook'
    })
  }
).then((res) => res.json());

console.log(picture.id);

Example 3

Upload an image as multipart form data

Use multipart when you send a raw file directly from a browser or backend.

JavaScript / FormData Preview
const projectId = 'prj_123';
const form = new FormData();

form.append('file', sourcePhoto);
form.append('scene_type', 'interior');
form.append('scene_location', 'living_room');
form.append('webhook_url', 'https://partner.example/aixpose/webhook');

const picture = await fetch(
  `https://api.aixpose.art/v1/projects/${projectId}/pictures`,
  {
    method: 'POST',
    headers: {
      Authorization: 'Bearer aix_live_partner_key',
      'Idempotency-Key': crypto.randomUUID()
    },
    body: form
  }
).then((res) => res.json());

console.log(picture.id);

Example 4

Upload an image as base64 JSON

Use base64 when your integration already holds the image bytes in memory.

JavaScript / base64 JSON Preview
import { readFile } from 'node:fs/promises';

const projectId = 'prj_123';
const image = await readFile('living-room.jpg');

const picture = await fetch(
  `https://api.aixpose.art/v1/projects/${projectId}/pictures`,
  {
    method: 'POST',
    headers: {
      Authorization: 'Bearer aix_live_partner_key',
      'Content-Type': 'application/json',
      'Idempotency-Key': crypto.randomUUID()
    },
    body: JSON.stringify({
      source: {
        type: 'base64',
        media_type: 'image/jpeg',
        data: image.toString('base64')
      },
      scene_type: 'interior',
      scene_location: 'living_room'
    })
  }
).then((res) => res.json());

console.log(picture.id);

Example 5

Enhance a picture

Send generation instructions to create one or more new variants.

JavaScript / fetch Preview
const pictureId = 'pic_source';

const enhancedPictures = await fetch(
  `https://api.aixpose.art/v1/pictures/${pictureId}/enhancements`,
  {
    method: 'POST',
    headers: {
      Authorization: 'Bearer aix_live_partner_key',
      'Content-Type': 'application/json',
      'Idempotency-Key': 'listing-4812-kitchen-v1'
    },
    body: JSON.stringify({
      instruction: {
        source: 'preset',
        actions: [
          'interior-style-japandi',
          'interior-decoration-medium'
        ]
      },
      variants: 2,
      aspect_ratio: '16:9',
      resolution: '2K',
      webhook_url: 'https://partner.example/aixpose/webhook'
    })
  }
).then((res) => res.json());

console.log(enhancedPictures);

Example 6

Webhook event payload

Use webhook events to update your CRM, listing page or media queue when generation completes.

JSON / webhook body Preview
{
  "id": "evt_01HZY4Q6AV7M7K4QF9Q7S2A8E1",
  "type": "picture.completed",
  "created_at": "2026-05-06T05:56:00Z",
  "data": {
    "id": "pic_generated",
    "project_id": "prj_123",
    "status": "completed",
    "public_url": "https://cdn.aixpose.art/projects/prj_123/pic_generated.jpg",
    "version": 1,
    "subversion": 0,
    "scene_type": "interior",
    "scene_location": "living_room",
    "source_instruction": {
      "source": "preset",
      "actions": [
        "interior-style-japandi",
        "interior-decoration-medium"
      ]
    }
  }
}

Operational model

Built for asynchronous generation.

Picture and video generation runs asynchronously. Your integration should expect immediate acknowledgement, status transitions, signed webhook callbacks and idempotent writes for safe retries.

  • - Processing states for pictures and videos
  • - Signed events for completion and failure
  • - Version lineage for generated variants
  • - Credit balance and ledger reconciliation

Toegangsdetails

Laten we de API-afspraak en integratiedetails bespreken.

Vertel wat je wilt bouwen, verwacht mediavolume en systemen die gekoppeld moeten worden. We bekijken commerciële afspraak, scope en technische details samen.

Bespreek je API-integratie

Next step

Bring AIXpose generation into your CRM, portal or real estate workflow.

Share your use case, expected media volume and integration goals. We will review the API agreement, integration details and technical requirements with you.