TestFlight Page
Configure the TestFlight beta testing page for your app via the OrbitKit API.
Configure a hosted TestFlight page that links testers directly to your beta. The page is included in your deployed site and accessible at https://your-site/testflight.
Note: An active subscription is required to deploy and publish the TestFlight page.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /api/apps/:appId/testflight-page |
Get TestFlight page configuration |
| PUT | /api/apps/:appId/testflight-page |
Save TestFlight page configuration |
Get TestFlight page
GET /api/apps/:appId/testflight-page
Response
{
"enabled": true,
"testFlightUrl": "https://testflight.apple.com/join/AbCdEf",
"betaDescription": "Test the new photo filters before release",
"requirements": "iOS 17.0+, iPhone only",
"feedbackEmail": "beta@myapp.com",
"updatedAt": 1712345678000
}
Returns 404 NOT_FOUND if no TestFlight page is configured.
Save TestFlight page
PUT /api/apps/:appId/testflight-page
Request body
| Field | Type | Required | Description |
|---|---|---|---|
enabled |
boolean | Yes | Whether the TestFlight page is active |
testFlightUrl |
string | Yes | TestFlight invite link (https://testflight.apple.com/join/XXXXXX) |
betaDescription |
string | No | What testers should test (max 2000) |
requirements |
string | No | Device/OS requirements (max 500) |
feedbackEmail |
string | Yes | Contact email for tester feedback (max 320) |
The testFlightUrl must match the format https://testflight.apple.com/join/<code>. You can find this URL in App Store Connect under your app’s TestFlight tab.
Full example
curl -X PUT https://api.orbitkit.io/api/apps/-NtestApp123/testflight-page \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"testFlightUrl": "https://testflight.apple.com/join/AbCdEf",
"betaDescription": "Test the new photo filters before release",
"requirements": "iOS 17.0+, iPhone only",
"feedbackEmail": "beta@myapp.com"
}'
struct TestFlightPage: Codable {
let enabled: Bool
let testFlightUrl: String
var betaDescription: String?
var requirements: String?
let feedbackEmail: String
}
let page = TestFlightPage(
enabled: true,
testFlightUrl: "https://testflight.apple.com/join/AbCdEf",
betaDescription: "Test the new photo filters before release",
requirements: "iOS 17.0+, iPhone only",
feedbackEmail: "beta@myapp.com"
)
var request = URLRequest(url: URL(string: "https://api.orbitkit.io/api/apps/\(appId)/testflight-page")!)
request.httpMethod = "PUT"
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try JSONEncoder().encode(page)
let (data, _) = try await URLSession.shared.data(for: request)
let saved = try JSONDecoder().decode(TestFlightPage.self, from: data)
const res = await fetch(`https://api.orbitkit.io/api/apps/${appId}/testflight-page`, {
method: "PUT",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
enabled: true,
testFlightUrl: "https://testflight.apple.com/join/AbCdEf",
betaDescription: "Test the new photo filters before release",
requirements: "iOS 17.0+, iPhone only",
feedbackEmail: "beta@myapp.com",
}),
});
const saved = await res.json();
Response
Returns the saved TestFlight page object (same shape as GET response).
Errors
| Code | Status | When |
|---|---|---|
VALIDATION_FAILED |
400 | Invalid TestFlight URL format or missing required fields |
See also
- TestFlight — Apple’s beta testing platform
- CLI TestFlight commands — manage TestFlight pages from the terminal