Spacely AI Enterprise
  • Introduction
    • Overview
    • Getting Started
    • Authentication
    • Rate Limiting
    • Credit consumption
  • Instant Rendering API
    • Create renders from Spacely AI preset styles
    • Create renders from custom input
    • Create renders from image style transferring
  • Product Visualization API
    • Furniture placement
    • Decoration placement
    • Color transfer
  • Precision Space Planning API
    • 1-Point perspective
    • 2-Point perspective
  • OTHER ENDPOINTS
    • Get Resources
    • Polling Data
Powered by GitBook
On this page
  • Description
  • Use cases
  • Credit
  • API
  • Example
  • Support
  1. Precision Space Planning API

2-Point perspective

Previous1-Point perspectiveNextGet Resources

Last updated 1 year ago

Description

Generate orthogonal lines on uploaded room images to assist with accurate dimension calculations and room sizing visualizations of a 2-point perspective room image.

Use cases

  1. Accurate space planning and furniture fitting.

  2. Enhancing property listings with detailed room dimensions.

Credit

1 successful Space Design API call = 1 credit.

API

POST https://api.spacely.ai/api/v1/generate/two-point-perspective

This endpoint is used to advance generate

Headers

Name
Type
Description

X-API-KEY*

String

Request Body

Name
Type
Description

imageUrl*

String

The URL of the image representing the room or space to visualize dimensions.

topCornerLine*

Object[]

An array of 3 coordinate objects.

Each object represents a critical corner point in sequence from left to right: the top-left corner, an intermediary corner point (if the wall is not straight), and the top-right corner.

e.g.

[{ "x": 0, "y": 0},{"x":100.2,"y":100.2},

{"x": 200, "y": 200}]

bottomCornerReferenceLine*

Object[]

an array of 3 coordinate objects. Unlike the topCornerLine, the points provided here are not the actual corners of the room. Instead, each coordinate marks a point on the bottom boundary line of the room, where the distance to the actual corner is exactly 1 meter towards the center of the room. The sequence is from left to right: a point near the bottom-left corner, a middle reference point (usually at or close to the actual middle bottom corner of the room), and a point near the bottom-right corner.

roomHeight*

Float

The height of the room/space. Must be in meter.

{
  "data": "63d17492-43d9-4161-0000-b067be1316dc"
}

Example

curl --location 'https://api.spacely.ai/api/v1/generate/two-point-perspective' \
--header 'X-API-KEY: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "imageUrl": "IMAGE_URL",
    "topCornerLine": [
        {
            "x": -3.094736842105263,
            "y": 75.64426697406572
        },
        {
            "x": 420.88421052631577,
            "y": 157.60302986066367
        },
        {
            "x": 1022.8105263157895,
            "y": 89.56179274726159
        }
    ],
    "bottomCornerReferenceLine": [
        {
            "x": 250.67368421052632,
            "y": 587.7577004973422
        },
        {
            "x": 428.62105263157895,
            "y": 561.4690407035278
        },
        {
            "x": 603.4736842105264,
            "y": 571.2628708672278
        }
    ],
    "roomHeight": 3
}'
const myHeaders = new Headers();
myHeaders.append("X-API-KEY", "YOUR_API_KEY");
myHeaders.append("Content-Type", "application/json");

const raw = JSON.stringify({
  "imageUrl": "IMAGE_URL",
  "topCornerLine": [
    {
      "x": -3.094736842105263,
      "y": 75.64426697406572
    },
    {
      "x": 420.88421052631577,
      "y": 157.60302986066367
    },
    {
      "x": 1022.8105263157895,
      "y": 89.56179274726159
    }
  ],
  "bottomCornerReferenceLine": [
    {
      "x": 250.67368421052632,
      "y": 587.7577004973422
    },
    {
      "x": 428.62105263157895,
      "y": 561.4690407035278
    },
    {
      "x": 603.4736842105264,
      "y": 571.2628708672278
    }
  ],
  "roomHeight": 3
});

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

fetch("https://api.spacely.ai/api/v1/generate/two-point-perspective", requestOptions)
  .then((response) => response.text())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));
const axios = require('axios');
let data = JSON.stringify({
  "imageUrl": "IMAGE_URL",
  "topCornerLine": [
    {
      "x": -3.094736842105263,
      "y": 75.64426697406572
    },
    {
      "x": 420.88421052631577,
      "y": 157.60302986066367
    },
    {
      "x": 1022.8105263157895,
      "y": 89.56179274726159
    }
  ],
  "bottomCornerReferenceLine": [
    {
      "x": 250.67368421052632,
      "y": 587.7577004973422
    },
    {
      "x": 428.62105263157895,
      "y": 561.4690407035278
    },
    {
      "x": 603.4736842105264,
      "y": 571.2628708672278
    }
  ],
  "roomHeight": 3
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://api.spacely.ai/api/v1/generate/two-point-perspective',
  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);
});
package main

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

func main() {

  url := "https://api.spacely.ai/api/v1/generate/two-point-perspective"
  method := "POST"

  payload := strings.NewReader(`{
    "imageUrl": "IMAGE_URL",
    "topCornerLine": [
        {
            "x": -3.094736842105263,
            "y": 75.64426697406572
        },
        {
            "x": 420.88421052631577,
            "y": 157.60302986066367
        },
        {
            "x": 1022.8105263157895,
            "y": 89.56179274726159
        }
    ],
    "bottomCornerReferenceLine": [
        {
            "x": 250.67368421052632,
            "y": 587.7577004973422
        },
        {
            "x": 428.62105263157895,
            "y": 561.4690407035278
        },
        {
            "x": 603.4736842105264,
            "y": 571.2628708672278
        }
    ],
    "roomHeight": 3
}`)

  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))
}
import requests
import json

url = "https://api.spacely.ai/api/v1/generate/two-point-perspective"

payload = json.dumps({
  "imageUrl": "IMAGE_URL",
  "topCornerLine": [
    {
      "x": -3.094736842105263,
      "y": 75.64426697406572
    },
    {
      "x": 420.88421052631577,
      "y": 157.60302986066367
    },
    {
      "x": 1022.8105263157895,
      "y": 89.56179274726159
    }
  ],
  "bottomCornerReferenceLine": [
    {
      "x": 250.67368421052632,
      "y": 587.7577004973422
    },
    {
      "x": 428.62105263157895,
      "y": 561.4690407035278
    },
    {
      "x": 603.4736842105264,
      "y": 571.2628708672278
    }
  ],
  "roomHeight": 3
})
headers = {
  'X-API-KEY': 'YOUR_API_KEY',
  'Content-Type': 'application/json'
}

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

print(response.text)

Support

Any question? Contact us at support@spacely.ai

(e.g., "").

https://storage.googleapis.com/spacely/public/image/roomstyle3/bathroom-modern.jpg
Before
After