# Models

## The Job object

```json
{"openapi":"3.1.0","info":{"title":"Agency API — Jobs Management","version":"3.0"},"components":{"schemas":{"Job":{"type":"object","description":"A scheduled job — created automatically by other endpoints (such as `ReportExport`) and tracked through its lifecycle.","properties":{"Id":{"type":"string","format":"uuid","description":"The unique job identifier (UUID)."},"Type":{"type":"string","description":"The kind of work the job performs. Created automatically by the endpoint that schedules the job.\n\n| Value | Description |\n|---|---|\n| `DownloadReport` | Download an existing pre-generated report file. |\n| `ApiReport` | Asynchronous report export created via `GET /ReportExport/{ReportId}`. |\n| `UploadAds` | Bulk ad upload job. |\n| `TermModification` | Bulk modification of contract terms. |\n\nAdditional job types may exist beyond the values listed above.","enum":["DownloadReport","ApiReport","UploadAds","TermModification"]},"ProgramId":{"type":"string","description":"The program (also known as `CampaignId`) the job is scoped to, if applicable."},"CreatedBy":{"type":"string","description":"The Account SID of the user or account that created this job."},"CreatedDate":{"type":"string","format":"date-time","description":"The date and time the job was created, in ISO 8601 format with UTC offset."},"StartedDate":{"type":"string","format":"date-time","description":"The date and time the job began processing. Empty until the job transitions out of `QUEUED`."},"CompletedDate":{"type":"string","format":"date-time","description":"The date and time the job finished successfully. Only populated when `Status` is `COMPLETED`."},"AbandonedDate":{"type":"string","format":"date-time","description":"The date and time the job was abandoned (timed out before completing)."},"CancelledDate":{"type":"string","format":"date-time","description":"The date and time the job was cancelled. Only populated when `Status` is `CANCELLED`."},"FailedDate":{"type":"string","format":"date-time","description":"The date and time the job entered a failed state. Only populated when `Status` is `FAILED` or `ERROR`."},"LastProgressUpdateDate":{"type":"string","format":"date-time","description":"The date and time `PercentageComplete` was last updated."},"Status":{"type":"string","description":"The current lifecycle status of the job.\n\n| Value | Description |\n|---|---|\n| `QUEUED` | The job is scheduled and awaiting processing. |\n| `RUNNING` | The job is actively processing. |\n| `COMPLETED` | The job finished successfully — a result file is available via the `Download` endpoint. |\n| `CANCELLED` | The job was cancelled before completion. |\n| `ERROR` | The job stopped due to an unrecoverable system error. |\n| `FAILED` | The job ran but did not produce a usable result. |","enum":["QUEUED","RUNNING","COMPLETED","CANCELLED","ERROR","FAILED"]},"StatusMessage":{"type":"string","description":"A human-readable description of the current status — useful for diagnosing failures."},"RecordsProcessed":{"type":"integer","description":"The total number of records the job has processed so far."},"PercentageComplete":{"type":"integer","minimum":0,"maximum":100,"description":"Progress through the job, from `0` to `100`."},"Replayable":{"type":"boolean","description":"Whether this job can be replayed (re-run with the same parameters) using `PUT /Jobs/{JobId}/Replay`. Typically `true` for jobs in a terminal state."},"ResultUri":{"type":"string","format":"uri-reference","description":"The relative URI to download the job's result file. Available once `Status` is `COMPLETED`."}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://integrations.impact.com/agency-v3/reference/jobs-management/models.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
