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:

  1. 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
  1. Using the response body, find the storageProfileId of the source and destination storage profiles.

  2. 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"
        }
      }
    }
  ]
}
  1. Send the request body to the /v1/jobs API using POST to create the job. A valid response includes the jobId, 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:

  1. Send a GET request to /v1/jobs to retrieve a list of your jobs.

  2. Using the response body, determine the jobId of the manual job.

  3. Prepare a request body that includes the root of the storage profile, with the isDirectory attribute set to true:

{
  "objects": [
    {
      "relativePath": "/",
      "isDirectory": true
    }
  ]
}
  1. 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"
}