Getting Joblogic API access
Joblogic's public API is a REST API under /api/v1, documented at
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.