Getting Joblogic API access
Joblogic's public API is a REST API under /api/v1, documented at apidocs.joblogic.com. Access is gated on three things: credentials, a tenant id, and an IP allowlist entry. All three arrive from Joblogic — none of them are self-generated.
1. Request credentials
Joblogic ships an API Access app in its marketplace that automates the request. It returns:
| Value | What it is |
|---|---|
| Client ID | Identifies your integration |
| Client Secret | Emailed separately from the client id |
| Tenant ID | Your contractor's GUID in Joblogic |
Joblogic will also provision a UAT tenant at uat.joblogic.com so you can develop against test data. A fresh UAT tenant starts empty — export a handful of customers, sites, and assets from live and import them, or create records by hand.
2. Register your egress IP
Joblogic's resource servers only answer requests from IP addresses it has allowlisted. Supply the public IP your integration calls from before you start, and tell Joblogic whenever it changes.
This is the single most common failure mode: an unregistered IP returns **403 Forbidden**, which reads like a permissions problem but is not. If your credentials are correct and every call 403s, check the allowlist first.
3. Authenticate
Auth is OAuth2 client credentials. Exchange the client id and secret for a bearer token:
POST https://uatidentityserver.joblogic.com/connect/token
Content-Type: application/x-www-form-urlencoded
client_id=...&client_secret=...&grant_type=client_credentials&scope=JL.Api
{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6...",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "JL.Api"
}
Send it as Authorization: Bearer <access_token> on every request.
Tokens expire — Joblogic documents roughly an hour and reserves the right to change the lifetime without notice, so read expires_in rather than assuming a value, and treat a 401 as "mint a new token and retry once". This provider caches a token per credential set and refreshes it automatically.
4. Pass the tenant id
Every request carries the tenant id — the contractor whose data you're touching. It rides in the query string on GET/DELETE and as TenantId in the JSON body on POST/PUT. This provider injects it from the connected account, so tools never take it as a parameter.
Environments
| Resource server | Token endpoint | |
|---|---|---|
| UAT | https://uatapi.joblogic.com | https://uatidentityserver.joblogic.com/connect/token |
| Live | https://api.joblogic.com | supplied with your credentials |
Both URLs are overridable on the connection form. Develop against UAT and switch the environment once the flow is proven.
Rate limits
Endpoints are limited to 100 requests per minute by default, and the limit varies per client and can change without notice. Over the limit, Joblogic returns 429 Too Many Requests — back off exponentially and honour any Retry-After header. Batch reads and page deliberately rather than fanning out.
Dates
The API accepts and returns UTC only, for both reads and writes. Converting to and from local time is the caller's job. A datetime sent in another zone is accepted and then misinterpreted, which makes this a quiet source of off-by-hours bugs in scheduling.