GET
/
v1
/
apps
/
{name}
Get an app
curl --request GET \
  --url https://platform.jobbit.uk/v1/apps/{name} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://platform.jobbit.uk/v1/apps/{name}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://platform.jobbit.uk/v1/apps/{name}', 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://platform.jobbit.uk/v1/apps/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://platform.jobbit.uk/v1/apps/{name}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://platform.jobbit.uk/v1/apps/{name}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://platform.jobbit.uk/v1/apps/{name}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "name": "kent-physio-site",
  "id": "5c0e8f21-7a3b-4d96-b1e4-90a2c7d83f15",
  "url": "https://kent-physio-site.apps.jobbit.uk",
  "status": "deployed",
  "effective_status": "ready",
  "app_status": "deployed",
  "operation_status": "none",
  "runtime_status": "running",
  "access_status": "active",
  "resource_status": "normal",
  "status_message": "The app is running and access is active.",
  "allowed_actions": {
    "open_app": {
      "allowed": true,
      "reason": null
    },
    "restart": {
      "allowed": true,
      "reason": null
    },
    "redeploy": {
      "allowed": true,
      "reason": null
    },
    "update_env": {
      "allowed": true,
      "reason": null
    },
    "delete": {
      "allowed": true,
      "reason": null
    },
    "view_logs": {
      "allowed": true,
      "reason": null
    },
    "edit_metadata": {
      "allowed": true,
      "reason": null
    }
  },
  "custom_domain": "kentphysio.co.uk",
  "cpu_limit": 0.5,
  "memory_limit_bytes": 536870912,
  "disk_limit_bytes": 2147483648,
  "disk_used_bytes": 183500800,
  "suspended": false,
  "suspended_reason": null,
  "error": null,
  "created_at": "2026-10-20T09:14:02",
  "updated_at": "2026-11-05T14:10:44",
  "expires_at": null
}
{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "not_found",
"message": "not found",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "invalid_request",
"message": "the request is not valid",
"details": [
{
"location": [
"body",
"name"
],
"message": "String should match pattern '^[a-z0-9][a-z0-9-]*$'",
"type": "string_pattern_mismatch"
}
],
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}

Authorizations

Authorization
string
header
required

An API key from Settings → API keys, sent as Authorization: Bearer jb_live_…

Path Parameters

name
string
required

The app name.

Required string length: 1 - 100
Pattern: ^[A-Za-z0-9][A-Za-z0-9-]*$

Response

The app.

An app as the account sees it. The hosting node, owner and internal metadata are left out.

name
string
required

The app name, used in paths.

id
string

The app id.

url
string<uri> | null

The address the app is served from.

status
string

The lifecycle: pending, building, deployed, failed or deleted.

effective_status
string

The one status to show: failed, queued, building, rebuilding, suspended, throttled, scaling, ready or deleted.

app_status
string

The durable lifecycle: pending, building, deployed, failed or deleted.

operation_status
string

Current work: queued, building, rebuilding, verifying or none.

runtime_status
string

Whether it is serving: running, stopped or crashed.

access_status
string

Whether traffic reaches it: active, suspended or inactive.

resource_status
string

Resource state, such as normal, throttled, scaling or suspended.

status_message
string

A sentence about the current state.

allowed_actions
object

What can be done now, by action: open_app, restart, redeploy, update_env, delete, view_logs, edit_metadata. Use this instead of checking states yourself.

custom_domain
string | null

The custom domain, if one is set.

cpu_limit
number | null

CPU cores the app may use.

memory_limit_bytes
integer | null

Memory limit in bytes.

disk_limit_bytes
integer | null

Disk limit in bytes.

disk_used_bytes
integer | null

Disk used in bytes.

suspended
boolean

Whether the app is suspended.

suspended_reason
string | null

Why it is suspended.

error
string | null

The last error, for a failed app.

created_at
string<date-time> | null

When it was created.

updated_at
string<date-time> | null

When it last changed.

expires_at
string<date-time> | null

When the app expires, on plans where apps expire.