Apiframe API Documentation
  • Get Started
  • My Account
    • Image credits
    • Generation modes
    • Delete My Account
  • Clients
    • Node.js Library
    • Python Client
    • Go Client
  • MEDIA UPLOAD APIS
    • Upload Image
    • Upload Audio
  • MIDJOURNEY
    • Authentication
    • Imagine
    • Reroll
    • Upscales
      • Upscale 1x
      • Upscale: Creative and Subtle
      • Upscale: 2x and 4x
    • Variations
    • Faceswap
    • Inpaint (Vary Region)
    • Outpaint (Zoom Out)
    • Pan
    • Shorten
    • Describe
    • Blend
    • Seed
    • Fetch
    • Fetch Many
    • Account Info
    • Statuses
    • Postman Collection
  • AI Photos
    • Upload and Prepare
    • Train
    • Generate
    • Best Input Images
  • IDEOGRAM
    • Imagine
    • Remix
    • Upscale
    • Describe
  • FLUX
    • Imagine
  • LUMA AI API
    • IMAGINE
    • EXTEND
  • SUNO AI API
    • IMAGINE
    • UPLOAD
    • EXTEND
    • LYRICS
  • UDIO AI API
    • IMAGINE
  • RUNWAY ML API
    • IMAGINE
  • KLING AI API
    • IMAGINE
    • VIRTUAL TRY ON
  • SORA AI API
  • Webhooks
  • MJ Banned Words
  • Help Me With Integration
  • FAQ
Powered by GitBook
On this page

Was this helpful?

  1. MIDJOURNEY

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.

PreviousInpaint (Vary Region)NextPan

Last updated 9 months ago

Was this helpful?

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

Headers

Name
Value

Content-Type

application/json

Authorization*

Your APIFRAME API Key

Body

Name
Type
Description

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"

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"
}
// Bad request
{
  "errors": [{ msg: "Invalid request" }]
}
// Invalid API Key
{}
// A server error occured
{}

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

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

url = "https://api.apiframe.pro/outpaint"

payload = json.dumps({
  "parent_task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a",
  "zoom_ratio": "2"
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'YOUR_API_KEY'
}

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

print(response.text)
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.apiframe.pro/outpaint',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "parent_task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a",
    "zoom_ratio": "2"
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'Authorization: YOUR_API_KEY'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"parent_task_id\": \"29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a\",\r\n    \"zoom_ratio\": \"2\"\r\n}");
Request request = new Request.Builder()
  .url("https://api.apiframe.pro/outpaint")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "YOUR_API_KEY")
  .build();
Response response = client.newCall(request).execute();
var headers = {
  'Content-Type': 'application/json',
  'Authorization': 'YOUR_API_KEY'
};
var data = json.encode({
  "parent_task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a",
  "zoom_ratio": "2"
});
var dio = Dio();
var response = await dio.request(
  'https://api.apiframe.pro/outpaint',
  options: Options(
    method: 'POST',
    headers: headers,
  ),
  data: data,
);

if (response.statusCode == 200) {
  print(json.encode(response.data));
}
else {
  print(response.statusMessage);
}
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.apiframe.pro/outpaint");
request.Headers.Add("Authorization", "YOUR_API_KEY");
var content = new StringContent("{\r\n    \"parent_task_id\": \"29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a\",\r\n    \"zoom_ratio\": \"2\"\r\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
require "uri"
require "json"
require "net/http"

url = URI("https://api.apiframe.pro/outpaint")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "YOUR_API_KEY"
request.body = JSON.dump({
  "parent_task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a",
  "zoom_ratio": "2"
})

response = https.request(request)
puts response.read_body

You can take a look

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

Fetch
webhooks
Fetch
here