Get a single app

GET /api/apps/{appId}
Returns app details and site configuration.

Parameters

Name Type Description
appIdrequired string The app's unique identifier Example: -NtestApp123

Responses

200 App details
Name Type Description
appId string Unique identifier for the app Example: -NtestApp123
appName string Display name of the app Example: My Weather App
site object
appName string Display name of the app Example: My Weather App
description string Short description shown on the site landing page Example: A beautiful weather app for iOS
slug string URL slug used in the site path (e.g. orbitkit.io/s/my-app) Example: my-weather-app
iconUrl string (uri) URL of the uploaded app icon (512x512 PNG)
customDomain string Custom domain assigned to this site, if any Example: privacy.myapp.com
smartBanner object
appStoreIdrequired string Numeric App Store ID Max 20 characters ยท Pattern: digits only
affiliateData string Max 200 characters
appArgument string Max 500 characters
appClipBundleId string Max 200 characters
appClipDisplay string bannercard
wellKnownFiles object Which Apple well-known verification files have been uploaded
appleDeveloperDomainAssociation boolean Whether the Sign in with Apple domain file is uploaded
appleDeveloperMerchantId boolean Whether the Apple Pay domain file is uploaded
subscriptionId string Stripe subscription ID for this app Example: sub_1abc2def3ghi
subscriptionStatus string Current subscription status for this app noneactivepast_duecanceled
cancelAtPeriodEnd boolean Whether the subscription is scheduled for cancellation at period end
currentPeriodEnd integer Unix timestamp of the current billing period end
deployed boolean Whether the site has been deployed at least once
deployedAt integer Unix timestamp (ms) of the last deploy Example: 1712345678000
createdAt integer Unix timestamp (ms) when the site was created Example: 1712345678000
updatedAt integer Unix timestamp (ms) of the last update Example: 1712345678000
401 Missing, invalid, or expired authentication token
Name Type Description
errorrequired object
coderequired string Machine-readable error code UNAUTHORIZEDFORBIDDENNOT_FOUNDVALIDATION_FAILEDRATE_LIMITEDSLUG_TAKENSLUG_RESERVEDDOMAIN_IN_USEAPP_LIMIT_REACHEDSUBSCRIPTION_REQUIREDSUBSCRIPTION_EXISTSNO_PAYMENT_METHODNO_ACTIVE_SUBSCRIPTIONNOT_CANCELINGALREADY_CANCELINGSUBSCRIPTION_CANCELINGSAME_PLANCARD_ERRORPAYMENT_ERRORNO_STRIPE_CUSTOMERCERT_CREATION_FAILEDDEPLOY_FAILEDAPI_KEY_LIMIT_REACHEDINVALID_IDEMPOTENCY_KEYIDEMPOTENCY_KEY_REUSEINTERNAL_ERROR
messagerequired string Human-readable error description
docUrl string (uri) Link to relevant API documentation for this error Example: https://orbitkit.io/api/errors/#unauthorized
details object[] Additional validation details (Zod errors)
404 Resource not found
Name Type Description
errorrequired object
coderequired string Machine-readable error code UNAUTHORIZEDFORBIDDENNOT_FOUNDVALIDATION_FAILEDRATE_LIMITEDSLUG_TAKENSLUG_RESERVEDDOMAIN_IN_USEAPP_LIMIT_REACHEDSUBSCRIPTION_REQUIREDSUBSCRIPTION_EXISTSNO_PAYMENT_METHODNO_ACTIVE_SUBSCRIPTIONNOT_CANCELINGALREADY_CANCELINGSUBSCRIPTION_CANCELINGSAME_PLANCARD_ERRORPAYMENT_ERRORNO_STRIPE_CUSTOMERCERT_CREATION_FAILEDDEPLOY_FAILEDAPI_KEY_LIMIT_REACHEDINVALID_IDEMPOTENCY_KEYIDEMPOTENCY_KEY_REUSEINTERNAL_ERROR
messagerequired string Human-readable error description
docUrl string (uri) Link to relevant API documentation for this error Example: https://orbitkit.io/api/errors/#unauthorized
details object[] Additional validation details (Zod errors)
Language
URL
GET https://api.orbitkit.io/api/apps/{appId}
curl -X GET "https://api.orbitkit.io/api/apps/-NtestApp123" \
  -H "Authorization: Bearer $ORBITKIT_API_KEY"
const response = await fetch(`https://api.orbitkit.io/api/apps/-NtestApp123`, {
  method: "GET",
  headers: {
    "Authorization": "Bearer " + apiKey,
  },
});

const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://api.orbitkit.io/api/apps/-NtestApp123")!)
request.httpMethod = "GET"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")

let (data, _) = try await URLSession.shared.data(for: request)
let json = try JSONSerialization.jsonObject(with: data)
print(json)
200
{
  "appId": "-NtestApp123",
  "appName": "My Weather App",
  "site": {
    "appName": "My Weather App",
    "description": "A beautiful weather app for iOS",
    "slug": "my-weather-app",
    "iconUrl": "https://example.com",
    "customDomain": "privacy.myapp.com",
    "smartBanner": "string",
    "wellKnownFiles": "string",
    "subscriptionId": "sub_1abc2def3ghi",
    "subscriptionStatus": "none",
    "cancelAtPeriodEnd": true,
    "currentPeriodEnd": 0,
    "deployed": true,
    "deployedAt": "1712345678000",
    "createdAt": "1712345678000",
    "updatedAt": "1712345678000"
  }
}
401
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or expired token",
    "docUrl": "https://orbitkit.io/api/errors/#unauthorized"
  }
}
404
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Resource not found",
    "docUrl": "https://orbitkit.io/api/errors/#not-found"
  }
}