curl --request GET \
--url https://api.phone-harness.com/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phone-harness.com/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phone-harness.com/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"sid": "abc123def456",
"uid": "exampleuser1",
"provider": "shlut",
"device": "Android",
"phone": null,
"created": 1800000000,
"ready": 1800000140,
"last": 1800000200,
"ended": 1800000230,
"end_reason": "released",
"billing_mode": "metered",
"cost_cents": 70,
"usage_minutes": 2,
"billable_minutes": 2
}
]{
"error": "<string>",
"code": "<string>",
"state": "<string>",
"unsupported": true,
"outcome": "unknown",
"id": "<string>",
"request_key": "<string>",
"cleanup_complete": true,
"balance_cents": 123,
"session": "<string>",
"session_limit": 123,
"active_session_count": 123,
"available_session_slots": 123
}{
"error": "<string>",
"code": "<string>",
"state": "<string>",
"unsupported": true,
"outcome": "unknown",
"id": "<string>",
"request_key": "<string>",
"cleanup_complete": true,
"balance_cents": 123,
"session": "<string>",
"session_limit": 123,
"active_session_count": 123,
"available_session_slots": 123
}{
"error": "<string>",
"code": "<string>",
"state": "<string>",
"unsupported": true,
"outcome": "unknown",
"id": "<string>",
"request_key": "<string>",
"cleanup_complete": true,
"balance_cents": 123,
"session": "<string>",
"session_limit": 123,
"active_session_count": 123,
"available_session_slots": 123
}Get recent history
Return up to 100 finished sessions, ordered by creation time descending. This endpoint has no pagination parameters. Prefer GET /history/page for a complete history.
curl --request GET \
--url https://api.phone-harness.com/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phone-harness.com/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phone-harness.com/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"sid": "abc123def456",
"uid": "exampleuser1",
"provider": "shlut",
"device": "Android",
"phone": null,
"created": 1800000000,
"ready": 1800000140,
"last": 1800000200,
"ended": 1800000230,
"end_reason": "released",
"billing_mode": "metered",
"cost_cents": 70,
"usage_minutes": 2,
"billable_minutes": 2
}
]{
"error": "<string>",
"code": "<string>",
"state": "<string>",
"unsupported": true,
"outcome": "unknown",
"id": "<string>",
"request_key": "<string>",
"cleanup_complete": true,
"balance_cents": 123,
"session": "<string>",
"session_limit": 123,
"active_session_count": 123,
"available_session_slots": 123
}{
"error": "<string>",
"code": "<string>",
"state": "<string>",
"unsupported": true,
"outcome": "unknown",
"id": "<string>",
"request_key": "<string>",
"cleanup_complete": true,
"balance_cents": 123,
"session": "<string>",
"session_limit": 123,
"active_session_count": 123,
"available_session_slots": 123
}{
"error": "<string>",
"code": "<string>",
"state": "<string>",
"unsupported": true,
"outcome": "unknown",
"id": "<string>",
"request_key": "<string>",
"cleanup_complete": true,
"balance_cents": 123,
"session": "<string>",
"session_limit": 123,
"active_session_count": 123,
"available_session_slots": 123
}Authorizations
Phone Harness account API key (pck_…). The dashboard may use a Clerk session JWT with the same header. Never put an account key in a URL.
Response
Recent history array.
Session ID; history uses sid rather than id.
Session admission. Unix time in seconds.
Readiness. Null if the session never became ready. Unix time in seconds.
Last recorded API activity. Unix time in seconds.
Recorded end of the session, not proof of physical cleanup completion. Unix time in seconds.
metered, disabled Recorded credit debits for this session in US cents.
Ready-to-ended time rounded up to whole minutes.
Usage minutes for metered sessions; zero for disabled billing.