Outpaint (Zoom Out)

The outpaint endpoint enlarges an image's canvas beyond its original size while keeping the contents of the original image unchanged. Of course you first need to Upscale 1x.

POST https://api.apiframe.pro/outpaint

Headers

NameValue

Content-Type

application/json

Authorization*

Your APIFRAME API Key

Body

NameTypeDescription

parent_task_id*

string

The task ID of the original task

zoom_ratio*

number

Can be:

  • 1.5 for MJ button "zoom out 1.5x"

  • 2 for MJ button "zoom out 2x"

  • (1, 2] for MJ button "custom zoom"

  • 1 for MJ button "make square"

You can take a look here

aspect_ratio

string

Aspect ratio of the image default value 1:1

prompt

string

Drawing prompt for new areas

webhook_url

string

The final result and updates of this task will be posted at this URL.

webhook_secret

string

Will be passed as x-webhook-secret in the webhook call headers for authentication.

Response

// Success, the task has been submitted
{
  "task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a"
}

This endpoint doesn't generate images instantly, you can use the Fetch endpoint to fetch the result or use webhooks.

The result (posted to the webhook_url or retrieved with the Fetch endpoint) looks like this:

{
    "task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a",
    "task_type": "outpaint-2",
    "original_image_url": "https://.../xxxxxxxx.png", // grid image
    "image_urls": [
        "https://.../xxxx1.png",
        "https://.../xxxx2.png",
        "https://.../xxxx3.png",
        "https://.../xxxx4.png"
    ]
}

If the job is not completed, you will get a result like this:

{
    "task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a",
    "task_type": "outpaint-2",
    "status": "processing",
    "percentage": "80"
}

Code samples

const axios = require('axios');
let data = JSON.stringify({
  "parent_task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a",
  "zoom_ratio": "2"
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://api.apiframe.pro/outpaint',
  headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'YOUR_API_KEY'
  },
  data : data
};

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

Last updated