Start recovery flow
curl --request POST \
--url https://prod-auth.tktchurch.com/oauth/recovery/init \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>"
}
'import Foundation
let parameters = ["client_id": "<string>"] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://prod-auth.tktchurch.com/oauth/recovery/init")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Content-Type": "application/json"]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({client_id: '<string>'})
};
fetch('https://prod-auth.tktchurch.com/oauth/recovery/init', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://prod-auth.tktchurch.com/oauth/recovery/init"
payload = { "client_id": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"session_id": "flw_9F8e7D6c5B4a",
"status": "awaiting_password",
"current_step": "password",
"expires_at": "2026-09-22T14:40:00Z"
}{
"error": "invalid_request",
"error_description": "Redirect URI not registered for this client"
}Start recovery flow
API-first entrypoint used by accounts/ sign-in.
POST
/
oauth
/
recovery
/
init
Start recovery flow
curl --request POST \
--url https://prod-auth.tktchurch.com/oauth/recovery/init \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>"
}
'import Foundation
let parameters = ["client_id": "<string>"] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://prod-auth.tktchurch.com/oauth/recovery/init")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Content-Type": "application/json"]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({client_id: '<string>'})
};
fetch('https://prod-auth.tktchurch.com/oauth/recovery/init', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://prod-auth.tktchurch.com/oauth/recovery/init"
payload = { "client_id": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"session_id": "flw_9F8e7D6c5B4a",
"status": "awaiting_password",
"current_step": "password",
"expires_at": "2026-09-22T14:40:00Z"
}{
"error": "invalid_request",
"error_description": "Redirect URI not registered for this client"
}