Upload an image
:::openapi-operation POST /api/v1/workspaces/{workspace}/uploads AUTH bearerAuth :::
Uploads a PNG, JPEG, WebP, or GIF image up to 10 MiB and returns its same-origin URL.
:::codesamples open Code examples
curl -X POST "https://contextowl.co/api/v1/workspaces/string/uploads" \
-H "Accept: application/json" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: multipart/form-data" \
--data '{
"file": "string"
}'
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
.uri(URI.create("https://contextowl.co/api/v1/workspaces/string/uploads"))
.header("Accept", "application/json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"file\": \"string\"\n}"))
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
import urllib.request
url = "https://contextowl.co/api/v1/workspaces/string/uploads"
headers = {
"Accept": "application/json",
"Authorization": "Bearer <token>",
"Content-Type": "multipart/form-data",
}
data = "{\n \"file\": \"string\"\n}".encode("utf-8")
req = urllib.request.Request(url, data=data, headers=headers, method="POST")
with urllib.request.urlopen(req) as res:
print(res.status)
print(res.read().decode())
const response = await fetch("https://contextowl.co/api/v1/workspaces/string/uploads", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": "Bearer <token>",
"Content-Type": "multipart/form-data",
},
body: JSON.stringify({
"file": "string"
})
});
console.log(response.status);
console.log(await response.json());
package main
import (
"fmt"
"io"
"net/http"
"strings"
"time"
)
func main() {
body := strings.NewReader(`{
"file": "string"
}`)
req, err := http.NewRequest("POST", "https://contextowl.co/api/v1/workspaces/string/uploads", body)
if err != nil {
panic(err)
}
req.Header.Set("Accept", "application/json")
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "multipart/form-data")
client := &http.Client{Timeout: 30 * time.Second}
res, err := client.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
bodyBytes, err := io.ReadAll(io.LimitReader(res.Body, 10<<20))
if err != nil {
panic(err)
}
fmt.Println(res.StatusCode)
fmt.Println(string(bodyBytes))
}
// cargo add reqwest --features blocking
fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::blocking::Client::new();
let response = client.request(reqwest::Method::POST, "https://contextowl.co/api/v1/workspaces/string/uploads")
.header("Accept", "application/json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data")
.body("{\n \"file\": \"string\"\n}")
.send()?;
println!("{}", response.status());
println!("{}", response.text()?);
Ok(())
}
:::
:::details open Parameters (1)
| NAME | IN | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|---|
workspace |
path | string | yes | Workspace id, or - for the key's bound workspace |
:::
:::details open Request body (required)
multipart/form-data
| FIELD | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|
file |
string (binary) | yes | PNG, JPEG, WebP, or GIF image up to 10 MiB |
{
"file": "string"
}
:::
:::details open Success responses (201)
201
Success
Content-Type: application/json
| FIELD | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|
url |
string | yes | - |
{
"url": "string"
}
:::
:::details Error responses (400, 401, 403, 404, 429)
400
Bad request
Content-Type: application/json
| FIELD | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|
error |
object | yes | - |
{
"error": {
"code": "string",
"details": null,
"message": "string",
"status": 0
}
}
401
Unauthorized
Content-Type: application/json
| FIELD | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|
error |
object | yes | - |
{
"error": {
"code": "string",
"details": null,
"message": "string",
"status": 0
}
}
403
Forbidden
Content-Type: application/json
| FIELD | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|
error |
object | yes | - |
{
"error": {
"code": "string",
"details": null,
"message": "string",
"status": 0
}
}
404
Not found
Content-Type: application/json
| FIELD | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|
error |
object | yes | - |
{
"error": {
"code": "string",
"details": null,
"message": "string",
"status": 0
}
}
429
Rate limited
Content-Type: application/json
| FIELD | TYPE | REQUIRED | DESCRIPTION |
|---|---|---|---|
error |
object | yes | - |
{
"error": {
"code": "string",
"details": null,
"message": "string",
"status": 0
}
}
:::