AIX
AIXpose API

Aperçu technique pour équipes produit et ingénierie.

Utilisez cette page pour comprendre la structure de l’API REST AIXpose. En nous contactant, nous pourrons discuter accord API, périmètre d’intégration, authentification, limites et exigences de production.

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.

Carte des ressources

Ce que l’API permet de faire

Utilisez cette carte comme guide des blocs d’intégration : les projets regroupent le contexte, images et vidéos représentent les médias générés, les catalogues alimentent l’UI, les webhooks livrent les statuts et les crédits réconcilient l’usage.

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

Détails d’accès

Discutons de l’accord API et des détails d’intégration.

Dites-nous ce que vous souhaitez construire, le volume média attendu et les systèmes à connecter. Nous passerons en revue accord commercial, périmètre et détails techniques.

Discuter de votre intégration API

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.