Skip to main content
POST
/
upload
Upload file to Arweave
curl --request POST \
  --url https://api.inprocess.world/api/upload \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "url": "https://example.com/image.jpg"
}
'
import requests

url = "https://api.inprocess.world/api/upload"

payload = { "url": "https://example.com/image.jpg" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: 'https://example.com/image.jpg'})
};

fetch('https://api.inprocess.world/api/upload', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.inprocess.world/api/upload",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com/image.jpg'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

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

func main() {

url := "https://api.inprocess.world/api/upload"

payload := strings.NewReader("{\n \"url\": \"https://example.com/image.jpg\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.inprocess.world/api/upload")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com/image.jpg\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.inprocess.world/api/upload")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"https://example.com/image.jpg\"\n}"

response = http.request(request)
puts response.read_body
{
  "uri": "ar://TV4yYVYJ7mwsDZ19h_YNQBtRbLVIr_WITsrBnHxxW30"
}
{
"status": "error",
"message": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
{
"status": "error",
"message": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
{
"message": "<string>",
"required": "<string>",
"available": "<string>",
"smart_wallet": "<string>"
}
{
"status": "error",
"message": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
{
"status": "error",
"message": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
This endpoint requires authentication. Use a bearer token in the Authorization header or an API key in the x-api-key header.

Overview

Fetches the file at the given url and uploads it to Arweave via the Turbo SDK. The upload tier is determined automatically:
  • Free — files under 5 MB, once per month per artist.
  • Paid — files 5 MB or larger, or additional uploads beyond the free monthly quota. The USDC cost is debited from the artist’s smart wallet.
For paid uploads, ensure the artist’s smart wallet has sufficient USDC before calling this endpoint. A 402 response includes the required and available amounts plus the smart_wallet address.

Example Request

curl -X POST https://api.inprocess.world/api/upload \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/image.jpg" }'

Example Response

{
  "uri": "ar://TV4yYVYJ7mwsDZ19h_YNQBtRbLVIr_WITsrBnHxxW30"
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
url
string
required

URL of the file to fetch and upload to Arweave.

Example:

"https://example.com/image.jpg"

Response

File uploaded

uri
string
required

Arweave URI of the uploaded file.

Example:

"ar://TV4yYVYJ7mwsDZ19h_YNQBtRbLVIr_WITsrBnHxxW30"