Create an app instance
curl --request POST \
--url https://api.contactbutton.com/v1/workspaces/{workspace}/apps \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"catalog_slug": "<string>",
"title": "<string>",
"fields": {},
"desktop": true,
"tablet": true,
"mobile": true,
"status": true,
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.contactbutton.com/v1/workspaces/{workspace}/apps"
payload = {
"catalog_slug": "<string>",
"title": "<string>",
"fields": {},
"desktop": True,
"tablet": True,
"mobile": True,
"status": True,
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
catalog_slug: '<string>',
title: '<string>',
fields: {},
desktop: true,
tablet: true,
mobile: true,
status: true,
resource_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.contactbutton.com/v1/workspaces/{workspace}/apps', 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.contactbutton.com/v1/workspaces/{workspace}/apps",
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([
'catalog_slug' => '<string>',
'title' => '<string>',
'fields' => [
],
'desktop' => true,
'tablet' => true,
'mobile' => true,
'status' => true,
'resource_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.contactbutton.com/v1/workspaces/{workspace}/apps"
payload := strings.NewReader("{\n \"catalog_slug\": \"<string>\",\n \"title\": \"<string>\",\n \"fields\": {},\n \"desktop\": true,\n \"tablet\": true,\n \"mobile\": true,\n \"status\": true,\n \"resource_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.contactbutton.com/v1/workspaces/{workspace}/apps")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"catalog_slug\": \"<string>\",\n \"title\": \"<string>\",\n \"fields\": {},\n \"desktop\": true,\n \"tablet\": true,\n \"mobile\": true,\n \"status\": true,\n \"resource_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contactbutton.com/v1/workspaces/{workspace}/apps")
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 \"catalog_slug\": \"<string>\",\n \"title\": \"<string>\",\n \"fields\": {},\n \"desktop\": true,\n \"tablet\": true,\n \"mobile\": true,\n \"status\": true,\n \"resource_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": "<unknown>",
"meta": {
"request_id": "<string>",
"next_cursor": "<string>"
}
}Create an app instance
POST
/
workspaces
/
{workspace}
/
apps
Create an app instance
curl --request POST \
--url https://api.contactbutton.com/v1/workspaces/{workspace}/apps \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"catalog_slug": "<string>",
"title": "<string>",
"fields": {},
"desktop": true,
"tablet": true,
"mobile": true,
"status": true,
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.contactbutton.com/v1/workspaces/{workspace}/apps"
payload = {
"catalog_slug": "<string>",
"title": "<string>",
"fields": {},
"desktop": True,
"tablet": True,
"mobile": True,
"status": True,
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
catalog_slug: '<string>',
title: '<string>',
fields: {},
desktop: true,
tablet: true,
mobile: true,
status: true,
resource_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.contactbutton.com/v1/workspaces/{workspace}/apps', 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.contactbutton.com/v1/workspaces/{workspace}/apps",
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([
'catalog_slug' => '<string>',
'title' => '<string>',
'fields' => [
],
'desktop' => true,
'tablet' => true,
'mobile' => true,
'status' => true,
'resource_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.contactbutton.com/v1/workspaces/{workspace}/apps"
payload := strings.NewReader("{\n \"catalog_slug\": \"<string>\",\n \"title\": \"<string>\",\n \"fields\": {},\n \"desktop\": true,\n \"tablet\": true,\n \"mobile\": true,\n \"status\": true,\n \"resource_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.contactbutton.com/v1/workspaces/{workspace}/apps")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"catalog_slug\": \"<string>\",\n \"title\": \"<string>\",\n \"fields\": {},\n \"desktop\": true,\n \"tablet\": true,\n \"mobile\": true,\n \"status\": true,\n \"resource_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contactbutton.com/v1/workspaces/{workspace}/apps")
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 \"catalog_slug\": \"<string>\",\n \"title\": \"<string>\",\n \"fields\": {},\n \"desktop\": true,\n \"tablet\": true,\n \"mobile\": true,\n \"status\": true,\n \"resource_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": "<unknown>",
"meta": {
"request_id": "<string>",
"next_cursor": "<string>"
}
}Authorizations
A Contact Button scoped bearer key. Send Authorization: Bearer <token>.
Token abilities are enforced independently of workspace membership; both checks must pass.
OAuth 2.0 authorization-code flows are not currently available.
Path Parameters
Body
application/json
Visible from 768px through 1023px. Defaults to mobile for legacy payloads.
Viewport visibility using mobile below 768px, tablet from 768px through 1023px, and desktop at 1024px or wider.
Show child attributes
Show child attributes
Available options:
form, list, null Related topics
Get an app instanceUpdate an app instanceDelete an unused app instanceUpdate an app instance (PUT compatibility)Create a button and its ordered apps from a system templateWas this page helpful?
⌘I