Upload mockup
curl --request POST \
--url https://api.surefeedback.com/api/v1/mockups \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"project_id": "<string>",
"name": "<string>",
"base_mockup_id": "<string>"
}
'import requests
url = "https://api.surefeedback.com/api/v1/mockups"
payload = {
"project_id": "<string>",
"name": "<string>",
"base_mockup_id": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({project_id: '<string>', name: '<string>', base_mockup_id: '<string>'})
};
fetch('https://api.surefeedback.com/api/v1/mockups', 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.surefeedback.com/api/v1/mockups",
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([
'project_id' => '<string>',
'name' => '<string>',
'base_mockup_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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.surefeedback.com/api/v1/mockups"
payload := strings.NewReader("{\n \"project_id\": \"<string>\",\n \"name\": \"<string>\",\n \"base_mockup_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.surefeedback.com/api/v1/mockups")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"project_id\": \"<string>\",\n \"name\": \"<string>\",\n \"base_mockup_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.surefeedback.com/api/v1/mockups")
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["Content-Type"] = 'application/json'
request.body = "{\n \"project_id\": \"<string>\",\n \"name\": \"<string>\",\n \"base_mockup_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "110e8400-e29b-41d4-a716-44665544000b",
"name": "Homepage v2",
"file_type": "image",
"file_url": "https://storage.surefeedback.com/mockups/...",
"project_id": "770e8400-e29b-41d4-a716-446655440002",
"created_at": "2026-03-02T12:00:00Z"
}
}
Mockups
Upload mockup
Upload an image or PDF as a mockup.
POST
/
mockups
Upload mockup
curl --request POST \
--url https://api.surefeedback.com/api/v1/mockups \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"project_id": "<string>",
"name": "<string>",
"base_mockup_id": "<string>"
}
'import requests
url = "https://api.surefeedback.com/api/v1/mockups"
payload = {
"project_id": "<string>",
"name": "<string>",
"base_mockup_id": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({project_id: '<string>', name: '<string>', base_mockup_id: '<string>'})
};
fetch('https://api.surefeedback.com/api/v1/mockups', 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.surefeedback.com/api/v1/mockups",
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([
'project_id' => '<string>',
'name' => '<string>',
'base_mockup_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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.surefeedback.com/api/v1/mockups"
payload := strings.NewReader("{\n \"project_id\": \"<string>\",\n \"name\": \"<string>\",\n \"base_mockup_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.surefeedback.com/api/v1/mockups")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"project_id\": \"<string>\",\n \"name\": \"<string>\",\n \"base_mockup_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.surefeedback.com/api/v1/mockups")
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["Content-Type"] = 'application/json'
request.body = "{\n \"project_id\": \"<string>\",\n \"name\": \"<string>\",\n \"base_mockup_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "110e8400-e29b-41d4-a716-44665544000b",
"name": "Homepage v2",
"file_type": "image",
"file_url": "https://storage.surefeedback.com/mockups/...",
"project_id": "770e8400-e29b-41d4-a716-446655440002",
"created_at": "2026-03-02T12:00:00Z"
}
}
Uploads a new mockup file (image or PDF) to a project. Supports direct file uploads and Figma imports.
Request body (multipart/form-data)
string
required
UUID of the project.
file
required
The image (PNG, JPG, GIF, WebP) or PDF file to upload. Max 50MB.
string
Display name for the mockup. Defaults to the filename.
string
UUID of an existing mockup to add this as a new version of.
{
"success": true,
"data": {
"id": "110e8400-e29b-41d4-a716-44665544000b",
"name": "Homepage v2",
"file_type": "image",
"file_url": "https://storage.surefeedback.com/mockups/...",
"project_id": "770e8400-e29b-41d4-a716-446655440002",
"created_at": "2026-03-02T12:00:00Z"
}
}
Was this page helpful?
⌘I