Create a Screen
curl --request POST \
--url https://api.framen.com/vendor/{org_token}/screens \
--header 'Content-Type: application/json' \
--data '
{
"screen_id": "<string>",
"title": "<string>",
"venue_type_id": "<string>",
"location_id": "<string>",
"width": 123,
"height": 123,
"loop_duration": 123,
"archived": true,
"available_for_ads": true,
"amount": 123,
"imps_weekly": 123
}
'import requests
url = "https://api.framen.com/vendor/{org_token}/screens"
payload = {
"screen_id": "<string>",
"title": "<string>",
"venue_type_id": "<string>",
"location_id": "<string>",
"width": 123,
"height": 123,
"loop_duration": 123,
"archived": True,
"available_for_ads": True,
"amount": 123,
"imps_weekly": 123
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
screen_id: '<string>',
title: '<string>',
venue_type_id: '<string>',
location_id: '<string>',
width: 123,
height: 123,
loop_duration: 123,
archived: true,
available_for_ads: true,
amount: 123,
imps_weekly: 123
})
};
fetch('https://api.framen.com/vendor/{org_token}/screens', 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.framen.com/vendor/{org_token}/screens",
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([
'screen_id' => '<string>',
'title' => '<string>',
'venue_type_id' => '<string>',
'location_id' => '<string>',
'width' => 123,
'height' => 123,
'loop_duration' => 123,
'archived' => true,
'available_for_ads' => true,
'amount' => 123,
'imps_weekly' => 123
]),
CURLOPT_HTTPHEADER => [
"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.framen.com/vendor/{org_token}/screens"
payload := strings.NewReader("{\n \"screen_id\": \"<string>\",\n \"title\": \"<string>\",\n \"venue_type_id\": \"<string>\",\n \"location_id\": \"<string>\",\n \"width\": 123,\n \"height\": 123,\n \"loop_duration\": 123,\n \"archived\": true,\n \"available_for_ads\": true,\n \"amount\": 123,\n \"imps_weekly\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
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.framen.com/vendor/{org_token}/screens")
.header("Content-Type", "application/json")
.body("{\n \"screen_id\": \"<string>\",\n \"title\": \"<string>\",\n \"venue_type_id\": \"<string>\",\n \"location_id\": \"<string>\",\n \"width\": 123,\n \"height\": 123,\n \"loop_duration\": 123,\n \"archived\": true,\n \"available_for_ads\": true,\n \"amount\": 123,\n \"imps_weekly\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.framen.com/vendor/{org_token}/screens")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"screen_id\": \"<string>\",\n \"title\": \"<string>\",\n \"venue_type_id\": \"<string>\",\n \"location_id\": \"<string>\",\n \"width\": 123,\n \"height\": 123,\n \"loop_duration\": 123,\n \"archived\": true,\n \"available_for_ads\": true,\n \"amount\": 123,\n \"imps_weekly\": 123\n}"
response = http.request(request)
puts response.read_bodyCreate a Screen
Register a new screen device at a location.
POST
/
vendor
/
{org_token}
/
screens
Create a Screen
curl --request POST \
--url https://api.framen.com/vendor/{org_token}/screens \
--header 'Content-Type: application/json' \
--data '
{
"screen_id": "<string>",
"title": "<string>",
"venue_type_id": "<string>",
"location_id": "<string>",
"width": 123,
"height": 123,
"loop_duration": 123,
"archived": true,
"available_for_ads": true,
"amount": 123,
"imps_weekly": 123
}
'import requests
url = "https://api.framen.com/vendor/{org_token}/screens"
payload = {
"screen_id": "<string>",
"title": "<string>",
"venue_type_id": "<string>",
"location_id": "<string>",
"width": 123,
"height": 123,
"loop_duration": 123,
"archived": True,
"available_for_ads": True,
"amount": 123,
"imps_weekly": 123
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
screen_id: '<string>',
title: '<string>',
venue_type_id: '<string>',
location_id: '<string>',
width: 123,
height: 123,
loop_duration: 123,
archived: true,
available_for_ads: true,
amount: 123,
imps_weekly: 123
})
};
fetch('https://api.framen.com/vendor/{org_token}/screens', 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.framen.com/vendor/{org_token}/screens",
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([
'screen_id' => '<string>',
'title' => '<string>',
'venue_type_id' => '<string>',
'location_id' => '<string>',
'width' => 123,
'height' => 123,
'loop_duration' => 123,
'archived' => true,
'available_for_ads' => true,
'amount' => 123,
'imps_weekly' => 123
]),
CURLOPT_HTTPHEADER => [
"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.framen.com/vendor/{org_token}/screens"
payload := strings.NewReader("{\n \"screen_id\": \"<string>\",\n \"title\": \"<string>\",\n \"venue_type_id\": \"<string>\",\n \"location_id\": \"<string>\",\n \"width\": 123,\n \"height\": 123,\n \"loop_duration\": 123,\n \"archived\": true,\n \"available_for_ads\": true,\n \"amount\": 123,\n \"imps_weekly\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
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.framen.com/vendor/{org_token}/screens")
.header("Content-Type", "application/json")
.body("{\n \"screen_id\": \"<string>\",\n \"title\": \"<string>\",\n \"venue_type_id\": \"<string>\",\n \"location_id\": \"<string>\",\n \"width\": 123,\n \"height\": 123,\n \"loop_duration\": 123,\n \"archived\": true,\n \"available_for_ads\": true,\n \"amount\": 123,\n \"imps_weekly\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.framen.com/vendor/{org_token}/screens")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"screen_id\": \"<string>\",\n \"title\": \"<string>\",\n \"venue_type_id\": \"<string>\",\n \"location_id\": \"<string>\",\n \"width\": 123,\n \"height\": 123,\n \"loop_duration\": 123,\n \"archived\": true,\n \"available_for_ads\": true,\n \"amount\": 123,\n \"imps_weekly\": 123\n}"
response = http.request(request)
puts response.read_bodyCreate a Screen
Register a new screen device at a location. Each screen belongs to exactly one Location.string
required
Your organization token (e.g.,
Org_4KmTqZnWpLx).string
required
Your unique identifier for this screen.
string
required
Display name of the screen.
string
required
Must be the same as or a child of the parent Location’s
venue_type_id. Use values from the Venue Types endpoint.string
required
Must reference an existing Location.
integer
required
Pixel width of the screen (e.g.,
1920).integer
required
Pixel height of the screen (e.g.,
1080).integer
required
Loop duration in seconds.
boolean
Whether the screen is archived. Default:
false. When true, the screen disappears from the Dashboard UI.boolean
Whether the screen is available for ad campaigns. Default:
true.integer
Number of physical screens this entry represents.
integer
Estimated weekly impressions.
Example Request
curl -X POST https://api.framen.com/vendor/Org_4KmTqZnWpLx/screens \
-H "Content-Type: application/json" \
-d '{
"screen_id": "Scr_xYz789",
"title": "Lobby Display A",
"venue_type_id": "205",
"location_id": "Loc_f9FxuWDTfzy",
"width": 1920,
"height": 1080,
"loop_duration": 60
}'
Last modified on April 17, 2026
⌘I