Get Job Sheet
Retrieve the published job sheet for a project - either as JSON metadata with an expiring
direct link, or as the PDF file itself. The same endpoint serves the other published project
documents (site report, stringing report, user manual) via the doc_type parameter.
https://solarproof.com.au/apidata.php?action=getjobsheet
Description
Returns the latest published version of a project document. Job sheets are published from the project's Documents panel and are versioned per project, so this endpoint always resolves to the most recent version that has not been deleted.
Call it in two modes. The default (format=json) returns metadata - filename, version,
size and publish date - and, where document storage is running on S3, a direct_url
that is valid for one hour and can be handed straight to another system. Calling it with
format=pdf streams the PDF bytes in the response body, which is the reliable option
for any environment.
403.
404 with available: false. Poll or retry rather than treating it as an
error - the document appears as soon as someone publishes it.
Request Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Required | Your Solar Proof API key |
action |
string | Required | Must be getjobsheet |
project_id |
integer | Required | The Solar Proof project (quote) ID |
doc_type |
string | Optional |
Which document to fetch. Defaults to jobsheet. Also accepts
sitereport, stringingreport, usermanual and
proposal.
|
format |
string | Optional |
json (default) returns metadata. pdf streams the file with
Content-Type: application/pdf.
|
The Response Object
| Field | Type | Description |
|---|---|---|
project_id |
integer | The project the document belongs to |
doc_type |
string | The document type that was resolved |
available |
boolean | true when a published version exists |
document_name |
string | Display / download filename |
version |
integer | Version number, incrementing per project and document type |
filesize |
integer | Size in bytes |
published_at |
string | When this version was published (YYYY-MM-DD HH:MM:SS) |
direct_url |
string |
Expiring link to the file, valid for one hour. null when document storage
is on the local filesystem rather than S3 - use format=pdf instead.
|
Example Response
{
"status": 200,
"project_id": 2143,
"doc_type": "jobsheet",
"available": true,
"document_name": "jobsheet_v3_20260713101500.pdf",
"version": 3,
"filesize": 486213,
"published_at": "2026-07-13 10:15:00",
"mime_type": "application/pdf",
"direct_url": "https://s3.ap-southeast-2.amazonaws.com/..."
}
{
"status": 404,
"project_id": 2143,
"doc_type": "jobsheet",
"available": false,
"Message": "No published document of that type for this project."
}
Error Responses
| Status | Meaning |
|---|---|
401 |
Missing or invalid api_key |
403 |
The project does not belong to your company |
404 |
No published document of that type, or the stored file could not be read |
422 |
Missing project_id |
Example Requests
curl -X GET "https://solarproof.com.au/apidata.php?action=getjobsheet&project_id=2143&api_key=YOUR_API_KEY"
curl -X GET "https://solarproof.com.au/apidata.php?action=getjobsheet&project_id=2143&format=pdf&api_key=YOUR_API_KEY" \
-o jobsheet-2143.pdf
curl -X GET "https://solarproof.com.au/apidata.php?action=getjobsheet&project_id=2143&doc_type=sitereport&api_key=YOUR_API_KEY"
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://solarproof.com.au/apidata.php"
meta = requests.get(BASE, params={
"action": "getjobsheet",
"project_id": 2143,
"api_key": API_KEY,
}).json()
if meta.get("available"):
pdf = requests.get(BASE, params={
"action": "getjobsheet",
"project_id": 2143,
"format": "pdf",
"api_key": API_KEY,
}).content
with open(meta["document_name"], "wb") as f:
f.write(pdf)
Common Use Cases
- Attach the job sheet to a job in a field service platform once a deal is won.
- File the job sheet against the deal or contact record in your CRM.
- Archive published documents to your own document management system.
- Check
versionon a schedule and re-fetch only when it increments.