Upload a file (creates a draft). Reference the returned id in offer / asset payloads.
curl --request POST \
--url https://api.offerclub.io/v1.0/files \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form file='@example-file'import requests
url = "https://api.offerclub.io/v1.0/files"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.offerclub.io/v1.0/files', 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.offerclub.io/v1.0/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-api-key: <api-key>"
],
]);
$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.offerclub.io/v1.0/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.offerclub.io/v1.0/files")
.header("x-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.offerclub.io/v1.0/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"originalName": "<string>",
"size": 123,
"mimeType": "<string>",
"isPublic": true,
"isDraft": true,
"uploadedAt": "2023-11-07T05:31:56Z",
"imageWidth": 123,
"imageHeight": 123,
"thumbnailWidth": 123,
"thumbnailHeight": 123,
"url": "<string>",
"urlExpiresAt": "2023-11-07T05:31:56Z",
"thumbnailUrl": "<string>",
"thumbnailUrlExpiresAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}Public API — Files
Upload a file (creates a draft). Reference the returned id in offer / asset payloads.
POST
/
v1.0
/
files
Upload a file (creates a draft). Reference the returned id in offer / asset payloads.
curl --request POST \
--url https://api.offerclub.io/v1.0/files \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form file='@example-file'import requests
url = "https://api.offerclub.io/v1.0/files"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.offerclub.io/v1.0/files', 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.offerclub.io/v1.0/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-api-key: <api-key>"
],
]);
$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.offerclub.io/v1.0/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.offerclub.io/v1.0/files")
.header("x-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.offerclub.io/v1.0/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"originalName": "<string>",
"size": 123,
"mimeType": "<string>",
"isPublic": true,
"isDraft": true,
"uploadedAt": "2023-11-07T05:31:56Z",
"imageWidth": 123,
"imageHeight": 123,
"thumbnailWidth": 123,
"thumbnailHeight": 123,
"url": "<string>",
"urlExpiresAt": "2023-11-07T05:31:56Z",
"thumbnailUrl": "<string>",
"thumbnailUrlExpiresAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": {
"errors": [
"email must be a string"
]
}
}Authorizations
API key for authentication (can be generated in the settings)
Body
multipart/form-data
max 10485760 bytes
Response
File uploaded as draft
The ID of the file
The original name of the file
The size of the file
The MIME type of the file
Whether the file is public accessible
Whether the file is a draft
The uploaded at date of the file
The width of the image
The height of the image
The width of the thumbnail
The height of the thumbnail
The (signed) URL of the file
The expiration date for the (signed) URL, null if the file is public accessible
The (signed) URL for the thumbnail, null if the file is not an image
The expiration date for the (signed) URL for the thumbnail, null if the file is not an image or the file is public accessible
Was this page helpful?