Unofficial reference — Use only with accounts you own or are authorized to use. Never commit real tokens.
Skylight requests observed so far use either:
Authorization: Basic <opaque token>— Not username:password; an opaque bearer-like token.Authorization: Bearer <jwt>— Standard bearer token (likely JWT).
This guide shows how to capture a token safely for testing documented endpoints.
If you need to authenticate programmatically (for scripts, automation, or testing), you can use the login endpoint to obtain a token.
POST https://app.ourskylight.com/api/sessions
Content-Type: application/json{
"email": "yourname@email.com",
"password": "thisis-yourpa-ssword"
}{
"data": {
"id": "12345678",
"type": "authenticated_user",
"attributes": {
"email": "yourname@email.com",
"token": "atu_Gxf2DRxSWCC2WIN8tvj7xDdA5h5ITt6a",
"subscription_status": "basic"
}
},
"meta": {
"password_reset": true
}
}Note: The above example uses fictional credentials for demonstration purposes only. Real tokens and IDs will differ. Never commit real credentials to version control.
To use this token in subsequent API requests, you need to:
-
Concatenate the
idandtokenfields with a colon separator:12345678:atu_Gxf2DRxSWCC2WIN8tvj7xDdA5h5ITt6a -
Base64 encode the concatenated string:
echo -n "12345678:atu_Gxf2DRxSWCC2WIN8tvj7xDdA5h5ITt6a" | base64
This produces:
MTIzNDU2Nzg6YXR1X0d4ZjJEUnhTV0NDMldJTjh0dmo3eERkQTVoNUlUdDZh -
Use it in your requests with the
Basicauthorization scheme:Authorization: Basic MTIzNDU2Nzg6YXR1X0d4ZjJEUnhTV0NDMldJTjh0dmo3eERkQTVoNUlUdDZh
To verify you're encoding correctly, try this test example:
# Test with id="testuser123" and token="test_token_abc"
echo -n "testuser123:test_token_abc" | base64
# Expected output: dGVzdHVzZXIxMjM6dGVzdF90b2tlbl9hYmM=If your output matches, you're encoding correctly. Replace with your actual id:token from the login response.
# Login and get token
curl -X POST 'https://app.ourskylight.com/api/sessions' \
-H 'Content-Type: application/json' \
-d '{
"email": "yourname@email.com",
"password": "thisis-yourpa-ssword"
}'
# Use the token (after base64 encoding id:token)
curl 'https://app.ourskylight.com/api/frames/REDACTED/chores' \
-H 'Authorization: Basic REDACTED'- Never commit credentials or real tokens to version control
- Store credentials securely (environment variables, credential managers, etc.)
- The
password_resetflag in the meta field indicates whether a password reset is required - Treat the token as a secret — it provides full access to your account
Use one of these HTTPS debugging proxies:
- Proxyman (macOS GUI)
- Charles Proxy (macOS/Windows GUI)
- mitmproxy (CLI; scriptable)
- Install and trust the proxy's root certificate (System Keychain).
- Enable SSL Proxying / HTTPS capture.
- Launch the Skylight app and log in.
- In the proxy session list, find the first authenticated request (e.g.,
GET /api/frames/{frameId}/chores). - Copy the Authorization header value.
Tip: If you only see
CONNECTentries or 4xx errors, enable SSL for the specific hostname and try again.
- Tokens are secrets. Do not commit real values.
- When sharing examples, replace with
REDACTEDand keep the structure (header name/value format).
If the desktop app is Electron/Chromium-based:
- Try View → Toggle Developer Tools from the app menu, or launch with:
open -na "/Applications/Skylight.app" --args --remote-debugging-port=9222 - Open Chrome →
chrome://inspect→ inspect the Skylight target. - Go to Network tab → click an API call → Headers → copy
Authorization.
This avoids TLS interception and certificate pinning issues.
Some apps validate the server certificate in code (“pinning”). If your proxy shows CONNECT tunnels but no decrypted traffic:
- Try a different proxy (Proxyman/Charles/mitmproxy).
- Use Frida to hook common pinning points (
SecTrustEvaluate,NSURLSession, Alamofire) on macOS. - Run Skylight in a VM or use transparent proxying (e.g., mitmproxy as gateway) to redirect traffic.
Note: Respect the app’s ToS and local laws. Use these techniques only for legitimate interoperability/debugging.
-
Add the header to your request:
Authorization: Basic REDACTEDor
Authorization: Bearer REDACTED -
Example cURL:
curl 'https://app.ourskylight.com/api/frames/REDACTED/chores?after=2025-08-25&before=2025-08-29' -H 'Authorization: Basic REDACTED' -H 'Accept: application/json'
If you receive 401 Unauthorized:
- Log out/in in the Skylight app and recapture a fresh token.
- Ensure you copied the header exactly (no whitespace changes).
When contributing examples to this repo:
- Replace tokens and any PII with
REDACTED(keep keys/shape intact). - Use stable placeholders for related IDs if structure matters (e.g.,
"CATEGORY_REDACTED").
See also: ../SECURITY.md and ../CONTRIBUTING.md.