# Furniture placement

<div><figure><img src="/files/WwzSCNp3SOoEpBgd6z1v" alt="" width="375"><figcaption><p>Before</p></figcaption></figure> <figure><img src="/files/9HiXpFPkYUNzP7EMZL0z" alt="" width="375"><figcaption><p>After - Furniture placed</p></figcaption></figure></div>

## Description

Add your furniture into the existing room. Spacely AI furniture placement AI will place the furniture into the room, making it smooth, seamless, and realistic.

## Use cases

1. Visual the furniture for client.
2. Rapid visualization furnitures for sales purposes.

## Credit

1 successful furniture placement API call = 1 credit.

## API

<mark style="color:green;">`POST`</mark> `https://api.spacely.ai/api/v1/generate/furniture-placement`

This endpoint is used to furniture placement generate

#### Headers

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| X-API-KEY<mark style="color:red;">\*</mark> | String |             |

#### Request Body

| Name                                              | Type   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| imageUrl<mark style="color:red;">\*</mark>        | String | <p>This field contains the URL of the background image where furniture will be placed.</p><p>(e.g., <a href="https://storage.googleapis.com/spacely-dev/product-placement-images/2e53a5ce9664dee4a2177bee61716893.jpg"><https://storage.googleapis.com/spacely-dev/product-placement-images/2e53a5ce9664dee4a2177bee61716893.jpg></a>")</p>                                                                                                                                                                                                                                        |
| productImageUrl<mark style="color:red;">\*</mark> | String | This field contains the URL of the furniture product image that will be placed within the background image. (e.g., <https://storage.googleapis.com/spacely-dev/product-placement-images/1.png>")                                                                                                                                                                                                                                                                                                                                                                                   |
| placement<mark style="color:red;">\*</mark>       | Object | <p>This object describes the position and size of the furniture within the background image. It includes four attributes:</p><p></p><p>x: The x-coordinate (horizontal position) of the top-left corner of the furniture placement.</p><p></p><p>y: The y-coordinate (vertical position) of the top-left corner of the furniture placement.</p><p></p><p>w: The width of the furniture placement.</p><p></p><p>h: The height of the furniture placement.</p><p></p><p>Please note that the x,y coordinate starts at the top-left corner of the image and can only be positive.</p> |
| area<mark style="color:red;">\*</mark>            | Object | This object defines the area within the background image where the furniture can be placed. It includes four attributes similar to placement, defining a larger bounding box where the furniture can be positioned.                                                                                                                                                                                                                                                                                                                                                                |

{% tabs %}
{% tab title="200: OK Response ref Id for pulling data" %}

```json
{
  "data": REF_ID
}
```

{% endtab %}

{% tab title="400: Bad Request Not Found: Requested resource not found on the server." %}

{% endtab %}

{% tab title="401: Unauthorized The API key provided was invalid or missing." %}

{% endtab %}

{% tab title="500: Internal Server Error Unexpected condition on the server preventing request fulfillment." %}

{% endtab %}
{% endtabs %}

## Example

{% tabs %}
{% tab title="cURL" %}

```sh
curl --location 'https://api.spacely.ai/api/v1/generate/furniture-placement' \
--header 'X-API-KEY: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "imageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/2e53a5ce9664dee4a2177bee61716893.jpg",
    "productImageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/1.png",
    "placement": {
        "x": 310,
        "y": 0,
        "w": 90.0,
        "h": 120.0
    },
    "area": {
        "x": 305,
        "y": 0,
        "w": 100.0,
        "h": 130.0
    }
}'
```

{% endtab %}

{% tab title="JavaScript  " %}

```javascript
const myHeaders = new Headers();
myHeaders.append("X-API-KEY", YOUR_API_KEY);
myHeaders.append("Content-Type", "application/json");

const raw = JSON.stringify({
  "imageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/2e53a5ce9664dee4a2177bee61716893.jpg",
  "productImageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/1.png",
  "placement": {
    "x": 310,
    "y": 0,
    "w": 90,
    "h": 120
  },
  "area": {
    "x": 305,
    "y": 0,
    "w": 100,
    "h": 130
  }
});

const requestOptions = {
  method: "POST",
  headers: myHeaders,
  body: raw,
  redirect: "follow"
};

fetch("https://api.spacely.ai/api/v1/generate/furniture-placement", requestOptions)
  .then((response) => response.text())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));
```

{% endtab %}

{% tab title="NodeJs" %}

```javascript
const axios = require('axios');
let data = JSON.stringify({
  "imageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/2e53a5ce9664dee4a2177bee61716893.jpg",
  "productImageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/1.png",
  "placement": {
    "x": 310,
    "y": 0,
    "w": 90,
    "h": 120
  },
  "area": {
    "x": 305,
    "y": 0,
    "w": 100,
    "h": 130
  }
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://api.spacely.ai/api/v1/generate/furniture-placement',
  headers: { 
    'X-API-KEY': YOUR_API_KEY, 
    'Content-Type': 'application/json'
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://api.spacely.ai/api/v1/generate/furniture-placement"
  method := "POST"

  payload := strings.NewReader(`{
    "imageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/2e53a5ce9664dee4a2177bee61716893.jpg",
    "productImageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/1.png",
    "placement": {
        "x": 310,
        "y": 0,
        "w": 90.0,
        "h": 120.0
    },
    "area": {
        "x": 305,
        "y": 0,
        "w": 100.0,
        "h": 130.0
    }
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("X-API-KEY", YOUR_API_KEY)
  req.Header.Add("Content-Type", "application/json")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = "https://api.spacely.ai/api/v1/generate/furniture-placement"

payload = json.dumps({
  "imageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/2e53a5ce9664dee4a2177bee61716893.jpg",
  "productImageUrl": "https://storage.googleapis.com/spacely-dev/product-placement-images/1.png",
  "placement": {
    "x": 310,
    "y": 0,
    "w": 90,
    "h": 120
  },
  "area": {
    "x": 305,
    "y": 0,
    "w": 100,
    "h": 130
  }
})
headers = {
  'X-API-KEY': YOUR_API_KEY,
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
```

{% endtab %}
{% endtabs %}

## Tips and tricks

After receiving the response, use this api to retrieve the data.

{% content-ref url="/pages/Rigpf4zaZeApMsn4mhHe" %}
[Get Resources](/spacely-ai-enterprise/other-endpoints/get-resources.md)
{% endcontent-ref %}

## Support

Any question? Contact us at <support@spacely.ai>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.enterprise.spacely.ai/spacely-ai-enterprise/product-visualization-api/furniture-placement.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
