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/storageProfilesto 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
storageProfileIdof the source and destination storage profiles. -
Create a request body including the
storageProfileIdvalues 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/jobsAPI 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/jobsto retrieve a list of your jobs. -
Using the response body, determine the
jobIdof the manual job. -
Prepare a request body that includes the root of the storage profile, with the
isDirectoryattribute set totrue:
{
"objects": [
{
"relativePath": "/",
"isDirectory": true
}
]
}- Send the request body to the
/v1/jobs/{jobId}/deliveriesAPI 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"
}