Manual Jobs
The Jet API allows you to create a manual job, which can be used to send files from a source to a destination on demand, without creating a new job for each transfer. Manual jobs retain their configuration and are triggered by a user or system. Manual jobs can also support Growing Files.
Before creating a manual job via the API, you must have a client_id
and client_secret
to generate an OAuth authentication token, which is required to use the Jet API.
For more information about generating OAuth tokens, see Getting Started with Jet API.
Creating Manual Jobs
To create a manual job:
- Send a GET request to
/v1/storageProfiles
to retrieve a list of the storage profiles associated with your Jet account:
curl -X GET -H "Authorization: Bearer {OAuthToken}" -H "Content-Type: application/json" https://platform-api-service.services.cloud.signiant.com/v1/storageProfiles
-
Using the response body, find the
storageProfileId
of the source and destination storage profiles. -
Create a request body including the
storageProfileId
values for the source and destination endpoints in the request body actions array:
{
"name": "Manual Job",
"actions": [
{
"type": "TRANSFER",
"data": {
"source": {
"storageProfileId": "3a613423-5b7a-4e8d-943b-85eb4e0e6fe0"
},
"destination": {
"storageProfileId": "4c1659d5-6452-4cb6-b400-098db2201895"
}
}
}
]
}
- Send the request body to the
/v1/jobs
API using POST to create the job. A valid response includes thejobId
, which is used to start the job.
Starting Manual Jobs
Manual jobs are started by sending a POST request to the /v1/jobs/{jobid}/deliveries
API endpoint that includes a list of files or directories in the request body.
A manual job can transfer all content or specific files or folders from a storage profile.
Note: Requests to the /v1/jobs/{jobid}/deliveries
endpoint on a paused job will return a 400 error. Paused jobs cannot be started using /deliveries
requests. To start a paused job, send a PATCH
request to the /v1/jobs/{jobId}
endpoint. For more information, see the Jet API Documentation.
Transferring All Profile Content
To transfer all profile content:
-
Send a GET request to
/v1/jobs
to retrieve a list of your jobs. -
Using the response body, determine the
jobId
of the manual job. -
Prepare a request body that includes the root of the storage profile, with the
isDirectory
attribute set totrue
:
{
"objects": [
{
"relativePath": "/",
"isDirectory": true
}
]
}
- Send the request body to the
/v1/jobs/{jobId}/deliveries
API endpoint.
Once the request is accepted, the API will respond with the list of the files and an assigned deliveryId
, starting the transfer:
"objects": [
{
"relativePath": "/",
"sizeInBytes": 1000000
}
],
"deliveryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Transferring Specific Files or Folders
The request body sent to the API endpoint must include the full path to each individual file to be transferred relative to the root of the storage profile location.
Note: To transfer a folder, the isDirectory
must be set to true
.
To transfer specific content:
{
"objects": [
{
"relativePath": "/example.mp4",
"sizeInBytes": 104857600
},
{
"relativePath": "/path/to/example.mov",
"sizeInBytes": 104857600
},
{
"relativePath": "/path/to/folder",
"isDirectory": true
}
]
}
Files contained in a subfolder on the source endpoint will have the same subfolder destination endpoint. If the subfolder does not exist, it will be created during the transfer.
Reporting Transfer Status
The Jet API allows you to report the status of a manual job by delivery or by transfer status.
- Reporting by delivery status includes information about all transfers included as part of a delivery.
- Reporting by transfer status includes information about a specific transfer.
Reporting Delivery Status
You can view a summary of all transfers performed by a delivery by sending a GET request to the /v1/jobs/{jobId}/deliveries/{deliveryid}
endpoint.
Note: A deliveryId
can also be found by sending a GET request to the /v1/jobs/
or /v1/jobs/{jobId}
endpoints.
Example Response
{
"metadata": {
"jobId": "96bd8b93-164e-4f49-8efc-c05121bc4fe7",
"actionId": "61241830-4db9-44af-8e3c-46eee1450ffc",
"baseUrl": "https://example.com/path/to/storage"
},
"createdByUser": "unknown",
"deliverySummary": {
"transferred": {
"count": 12,
"bytes": 69291341
},
"skipped": {
"count": 0,
"bytes": 0
},
"failed": {
"count": 0,
"bytes": 0
}
},
"lastModifiedByUser": "unknown",
"state": "IN_PROGRESS",
"deliveryId": "410a3c28-54dd-4de0-8f97-aea118284f84",
"lastModifiedOn": "2025-09-15T18:29:01.889Z",
"createdOn": "2025-09-15T18:28:59.681Z",
"lastEventTime": "2025-09-15T18:29:01.817Z",
"serviceId": "f738a0e3-02fc-4af8-90cd-d54ee6da5262",
"transfers": [
{
"transferId": "492e6c60-4b7f-418c-9165-3433b437018b"
}
]
}
Reporting Transfer Status
You can view a summary of specific transfers performed by a delivery by sending a GET request to the /v1/jobs/{jobId}/transfers/{transferid}
endpoint.
Note: A transferId
can be found by sending a GET request to the /v1/jobs/{jobId}/deliveries/{deliveryid}
endpoint.
Example Response
{
"metadata": {
"isRetry": false,
"jobId": "96bd8b93-164e-4f49-8efc-c05121bc4fe7",
"executionId": "a1fccd4d-224b-4eeb-b8f8-2b7fcf18fda1",
"deliveryId": "410a3c28-54dd-4de0-8f97-aea118284f84",
"deliveryBatchId": "38d9e101-5108-4b92-874f-8a9dc8623e1e",
"disableRetry": false
},
"destination": {
"accountId": "c3c7ce48-1412-46e7-8884-634ea45bd12c",
"serviceId": "f738a0e3-02fc-4af8-90cd-d54ee6da5262",
"url": "file:///usr/",
"endpointId": "1d1b6b9f-64c2-4c62-821c-5038909c6800",
"storageProfileType": "ON_PREMISE_FILE_STORAGE",
"type": "INTERNAL"
},
"options": {
"areGrowingObjects": false
},
"source": {
"config": {
"container": "example",
"region": "eastus",
"accountName": "exampleAccount"
},
"authentication": {
"configId": "_8dHd9tdH"
},
"accountId": "c3c7ce48-1412-46e7-8884-634ea45bd12c",
"endpointId": "04028d8c-cac6-4fc1-b619-1cca0ff17b11",
"storageProfileType": "AZURE_BLOB_STORAGE",
"serviceId": "f738a0e3-02fc-4af8-90cd-d54ee6da5262",
"url": "https://example.com/path/to/storage",
"type": "INTERNAL"
},
"transferProgress": {
"transferred": {
"count": 12,
"bytes": 69291341
},
"skipped": {
"count": 0,
"bytes": 0
},
"failed": {
"count": 0,
"bytes": 0
}
},
"lastModifiedOn": "2025-09-15T18:29:00.384Z",
"createdOn": "2025-09-15T18:29:00.384Z",
"transferId": "492e6c60-4b7f-418c-9165-3433b437018b",
"state": "IN_PROGRESS"
}