Create App
curl --request POST \
--url https://api.docketqa.com/apps/create \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"name": "<string>",
"platform": "<string>",
"build_name": "<string>",
"s3_key": "<string>",
"file_size": 123,
"original_filename": "<string>"
}
'import requests
url = "https://api.docketqa.com/apps/create"
payload = {
"name": "<string>",
"platform": "<string>",
"build_name": "<string>",
"s3_key": "<string>",
"file_size": 123,
"original_filename": "<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({
name: '<string>',
platform: '<string>',
build_name: '<string>',
s3_key: '<string>',
file_size: 123,
original_filename: '<string>'
})
};
fetch('https://api.docketqa.com/apps/create', 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.docketqa.com/apps/create",
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([
'name' => '<string>',
'platform' => '<string>',
'build_name' => '<string>',
's3_key' => '<string>',
'file_size' => 123,
'original_filename' => '<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.docketqa.com/apps/create"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"platform\": \"<string>\",\n \"build_name\": \"<string>\",\n \"s3_key\": \"<string>\",\n \"file_size\": 123,\n \"original_filename\": \"<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.docketqa.com/apps/create")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"platform\": \"<string>\",\n \"build_name\": \"<string>\",\n \"s3_key\": \"<string>\",\n \"file_size\": 123,\n \"original_filename\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.docketqa.com/apps/create")
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 \"name\": \"<string>\",\n \"platform\": \"<string>\",\n \"build_name\": \"<string>\",\n \"s3_key\": \"<string>\",\n \"file_size\": 123,\n \"original_filename\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyMobile Apps
Create App
POST
/
apps
/
create
Create App
curl --request POST \
--url https://api.docketqa.com/apps/create \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"name": "<string>",
"platform": "<string>",
"build_name": "<string>",
"s3_key": "<string>",
"file_size": 123,
"original_filename": "<string>"
}
'import requests
url = "https://api.docketqa.com/apps/create"
payload = {
"name": "<string>",
"platform": "<string>",
"build_name": "<string>",
"s3_key": "<string>",
"file_size": 123,
"original_filename": "<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({
name: '<string>',
platform: '<string>',
build_name: '<string>',
s3_key: '<string>',
file_size: 123,
original_filename: '<string>'
})
};
fetch('https://api.docketqa.com/apps/create', 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.docketqa.com/apps/create",
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([
'name' => '<string>',
'platform' => '<string>',
'build_name' => '<string>',
's3_key' => '<string>',
'file_size' => 123,
'original_filename' => '<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.docketqa.com/apps/create"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"platform\": \"<string>\",\n \"build_name\": \"<string>\",\n \"s3_key\": \"<string>\",\n \"file_size\": 123,\n \"original_filename\": \"<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.docketqa.com/apps/create")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"platform\": \"<string>\",\n \"build_name\": \"<string>\",\n \"s3_key\": \"<string>\",\n \"file_size\": 123,\n \"original_filename\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.docketqa.com/apps/create")
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 \"name\": \"<string>\",\n \"platform\": \"<string>\",\n \"build_name\": \"<string>\",\n \"s3_key\": \"<string>\",\n \"file_size\": 123,\n \"original_filename\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyRegister a new mobile app with its first build. The first build becomes the active build.
Call POST /apps/upload-url first to obtain an
s3_key.
Request body
string
required
Unique per platform. Max 255 chars.
string
required
"android" or "ios".string
required
Name for the first build (e.g. version or commit SHA). Max 255 chars.
string
required
From POST /apps/upload-url. Must belong to your company.
integer
required
Bytes uploaded.
string
Used to preserve the file extension in the stored object name.
{
"name": "Acme Mobile",
"platform": "android",
"build_name": "v1.0.0",
"s3_key": "files/2/4f8e1c2a-..._acme.apk",
"file_size": 84213120,
"original_filename": "acme.apk"
}
Response
Returns{ message, app } where app includes id, name, platform, current_build (with id, name, arch, file), build_count, created_at, updated_at.
arch is auto-detected for Android builds ("arm64", "x86_64", "universal") and is always null for iOS.
{
"message": "App created successfully",
"app": {
"id": 17, "name": "Acme Mobile", "platform": "android", "build_count": 1,
"current_build": {
"id": 42, "name": "v1.0.0", "arch": "arm64",
"file": { "id": 312, "file_name": "Acme_Mobile_android_20260427_140312.apk", "file_size": 84213120 }
}
}
}
Errors
| Status | Cause |
|---|---|
400 | Missing/invalid field, bad extension, or 32-bit-only Android binary. |
403 | No mobile concurrency on plan, or s3_key not owned by your company. |
409 | An app with the same name already exists for this platform. |
⌘I

