Skip to main content
This API reference documents the endpoints for managing FileSets and Files in Domo from within a Domo app.
BETA: This API is currently in BETA and is subject to change. Endpoints, request/response formats, and functionality may change without notice. Note: All code examples below are tested and match the working Domo app UI. Use domo.* methods for all API calls except File upload/download, which require fetch for binary or FormData support.

Get File by Path

Method: GET
Endpoint: /domo/files/v1/filesets/{filesetId}/path?path={filePath}
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
pathStringYesThe path to the File within the FileSet
domo
  .get(
    `/domo/files/v1/filesets/${filesetId}/path?path=${encodeURIComponent(
      filePath,
    )}`,
  )
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "id": "00000000-0000-0000-0000-000000000001",
  "path": "rules.txt",
  "name": "rules.txt",
  "fileType": "TEXT",
  "contentType": "text/plain",
  "size": 12345,
  "hash": "fakehash00000000000000000000000000000000000000000000000000000000000001",
  "hashAlgorithm": "SHA_256_HEX",
  "downloadUrl": null,
  "created": "2025-01-01T00:00:00.000Z",
  "createdBy": 111111111,
  "connectorKey": null,
  "indexStatus": null,
  "indexReason": null
}

Get File by Id

Method: GET
Endpoint: /domo/files/v1/filesets/{filesetId}/files/{fileId}
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
fileIdStringYesThe ID of the File
domo
  .get(`/domo/files/v1/filesets/${filesetId}/files/${fileId}`)
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "id": "00000000-0000-0000-0000-000000000002",
  "path": "rules.txt",
  "name": "rules.txt",
  "fileType": "TEXT",
  "contentType": "text/plain",
  "size": 12345,
  "hash": "fakehash00000000000000000000000000000000000000000000000000000000000002",
  "hashAlgorithm": "SHA_256_HEX",
  "downloadUrl": "/domo/files/v1/filesets/00000000-0000-0000-0000-000000000010/files/00000000-0000-0000-0000-000000000002/download",
  "created": "2025-01-01T00:00:00.000Z",
  "createdBy": 111111111,
  "connectorKey": null,
  "indexStatus": null,
  "indexReason": null
}

Download File by Id

Method: GET
Endpoint: /domo/files/v1/filesets/{filesetId}/files/{fileId}/download
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
fileIdStringYesThe ID of the File
Note: Use fetch for File downloads. domo.get does not support binary downloads.
fetch(`/domo/files/v1/filesets/${filesetId}/files/${fileId}/download`)
  .then((response) => response.blob())
  .then((blob) => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'downloaded-file'; // Set your filename
    document.body.appendChild(a);
    a.click();
    a.remove();
    window.URL.revokeObjectURL(url);
  })
  .catch((error) => console.error(`Error: ${error}`));
Response:
  • Returns the File contents as a download (binary/text stream).

Query Files

Method: POST
Endpoint: /domo/files/v1/filesets/{filesetId}/query
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
Request Body Parameters:
ParameterTypeRequiredDescription
queryStringYesText to search for in Files
directoryPathStringNoLimit search to a specific directory
topKIntegerNoMaximum number of results to return
domo
  .post(`/domo/files/v1/filesets/${filesetId}/query`, {
    query: 'search for text in documents', // Required: Text to search for in files
    directoryPath: 'reports/quarterly', // Optional: Limit search to specific directory
    topK: 5, // Optional: Maximum number of results to return
  })
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
[
  {
    "id": "00000000-0000-0000-0000-000000000003",
    "path": "rules.txt",
    "name": "rules.txt",
    "fileType": "TEXT",
    "contentType": "text/plain",
    "size": 12345,
    "created": "2025-01-01T00:00:00.000Z",
    "createdBy": 111111111
  }
]

Upload File

Method: POST
Endpoint: /domo/files/v1/filesets/{filesetId}/files
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
Note: Use fetch for file uploads. Always set the file content type to text/plain for text files, as in the app code.
const file = fileInput.files[0];
const formdata = new FormData();
formdata.append(
  'file',
  new File([file], file.name, { type: 'text/plain' }),
  file.name,
);
formdata.append('createFileRequest', JSON.stringify({ directoryPath: '' }));

fetch(`/domo/files/v1/filesets/${filesetId}/files`, {
  method: 'POST',
  body: formdata,
})
  .then((response) => response.json())
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "id": "00000000-0000-0000-0000-000000000004",
  "path": "rules.txt",
  "name": "rules.txt",
  "fileType": "TEXT",
  "contentType": "text/plain",
  "size": 12345,
  "created": "2025-01-01T00:00:00.000Z",
  "createdBy": 111111111
}

Search Files in FileSet

Method: POST
Endpoint: /domo/files/v1/filesets/{filesetId}/files/search
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
Query Parameters:
ParameterTypeRequiredDescription
directoryPathStringNoFilter Files by specific directory path
immediateChildrenBooleanNoIf true, returns only immediate children of directory (default: false)
limitIntegerNoMaximum number of results (default: 100)
nextStringNoPagination token for fetching next set of results
Request Body Parameters:
ParameterTypeRequiredDescription
fieldSortArrayNoSort options for results. Array of FieldSort Objects.
filtersArrayNoFilter criteria for the search. Array of Filter Objects.
dateFiltersArrayNoDate-based filter criteria. Array of DateFilter Objects.
Filter Object Properties:
PropertyTypeDescription
fieldStringField name to filter on (e.g., ‘name’, ‘description’)
valueArrayValues to match against
notBooleanIf true, inverts the filter match
operatorStringOperation type: ‘EQUALS’, ‘GREATER_THAN’, ‘LESS_THAN’, ‘IN’, ‘LIKE’, etc.
FieldSort Object Properties:
PropertyTypeDescription
fieldStringField name to sort by
orderStringSort direction: ‘ASC’ or ‘DESC’
DateFilter Object Properties:
PropertyTypeDescription
fieldStringField name for date filter (e.g., ‘created’)
startStringStart timestamp as ISO string
endStringEnd timestamp as ISO string
notBooleanIf true, inverts the date filter match
// Example 1: List all files
domo
  .post(`/domo/files/v1/filesets/${filesetId}/files/search`, {})
  .then((result) => console.log(result.files))
  .catch((error) => console.error(`Error: ${error}`));

// Example 2: Advanced search with directory path and filters
domo
  .post(
    `/domo/files/v1/filesets/${filesetId}/files/search?directoryPath=reports&limit=20`,
    {
      // Sort by file name in ascending order
      fieldSort: [
        {
          field: 'name',
          order: 'ASC',
        },
      ],
      // Filter files by name
      filters: [
        {
          field: 'name',
          value: ['.pdf'],
          operator: 'LIKE',
        },
      ],
      // Filter files created in past 30 days
      dateFilters: [
        {
          field: 'created',
          start: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString(), // 30 days ago as ISO string
          end: new Date().toISOString(), // Current time as ISO string
        },
      ],
    },
  )
  .then((result) => console.log(result.files))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "files": [
    {
      "id": "00000000-0000-0000-0000-000000000005",
      "path": "reports/quarterly-report.pdf",
      "name": "quarterly-report.pdf",
      "fileType": "FILE",
      "contentType": "application/pdf",
      "size": 234567,
      "created": "2025-06-15T00:00:00.000Z",
      "createdBy": 111111111
    }
  ],
  "pageContext": {
    "next": "eyJpZCI6IjEyMzQ1Njc4OTAifQ=="
  }
}

Delete Files by Path

Method: DELETE
Endpoint: /domo/files/v1/filesets/{filesetId}/path?path={filePath}
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
filePathStringYesThe path to the File within the FileSet
domo
  .delete(
    `/domo/files/v1/filesets/${filesetId}/path?path=${encodeURIComponent(
      filePath,
    )}`,
  )
  .then((result) => {
    if (result === 1 || (result && result.status === 'success')) {
      console.log('File deleted successfully.');
    } else {
      console.log(result);
    }
  })
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "status": "success",
  "message": "File deleted successfully."
}

Delete File by Id

Method: DELETE
Endpoint: /domo/files/v1/filesets/{filesetId}/files/{fileId}
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
fileIdStringYesThe ID of the File
domo
  .delete(`/domo/files/v1/filesets/${filesetId}/files/${fileId}`)
  .then((result) => {
    if (result === 1 || (result && result.status === 'success')) {
      console.log('File deleted successfully.');
    } else {
      console.log(result);
    }
  })
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "status": "success",
  "message": "File deleted successfully."
}

Search FileSets

Method: POST
Endpoint: /domo/files/v1/filesets/search
Query Parameters:
ParameterTypeRequiredDescription
limitIntegerNoMaximum number of results (default: 100)
offsetIntegerNoPagination offset (default: 0)
Note: To list all FileSets, send an empty object as the body. To filter, provide filter parameters in the body.
Request Body Parameters:
ParameterTypeRequiredDescription
fieldSortArrayNoSort options for results. Array of FieldSort Objects.
filtersArrayNoFilter criteria for the search. Array of Filter Objects.
dateFiltersArrayNoDate-based filter criteria. Array of DateFilter Objects.
Filter Object Properties:
PropertyTypeDescription
fieldStringField name to filter on (e.g., ‘name’, ‘description’)
valueArrayValues to match against
notBooleanIf true, inverts the filter match
operatorStringOperation type: ‘EQUALS’, ‘GREATER_THAN’, ‘LESS_THAN’, ‘IN’, ‘LIKE’, etc.
FieldSort Object Properties:
PropertyTypeDescription
fieldStringField name to sort by
orderStringSort direction: ‘ASC’ or ‘DESC’
DateFilter Object Properties:
PropertyTypeDescription
fieldStringField name for date filter (e.g., ‘created’)
startStringStart timestamp as ISO string
endStringEnd timestamp as ISO string
notBooleanIf true, inverts the date filter match
// Example 1: List all FileSets (empty search)
domo
  .post('/domo/files/v1/filesets/search', {})
  .then((result) => console.log(result.fileSets))
  .catch((error) => console.error(`Error: ${error}`));

// Example 2: Advanced search with filters and sorting
domo
  .post('/domo/files/v1/filesets/search', {
    // Sort by name in ascending order
    fieldSort: [
      {
        field: 'name',
        order: 'ASC',
      },
    ],
    // Filter FileSet by name containing "Marketing"
    filters: [
      {
        field: 'name',
        value: ['Marketing'],
        operator: 'LIKE',
      },
    ],
    // Filter FileSet created between two dates
    dateFilters: [
      {
        field: 'created',
        start: '2025-06-01T19:23:55.156Z', // June 1, 2024
        end: '2025-06-30T19:23:55.156Z', // June 30, 2024
      },
    ],
  })
  .then((result) => console.log(result.fileSets))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "fileSets": [
    {
      "id": "00000000-0000-0000-0000-000000000010",
      "name": "Sample FileSet",
      "description": "A sample FileSet for demonstration purposes.",
      "created": "2025-01-01T00:00:00.000Z",
      "createdBy": 111111111
    }
  ]
}

Create FileSet

Method: POST
Endpoint: /domo/files/v1/filesets
Request Body Parameters:
ParameterTypeRequiredDescription
nameStringYesThe name of the FileSet
accountIdIntegerNoThe account ID to associate (nullable)
connectorContextObjectNoConnector context for the FileSet (nullable). ConnectorContext Object.
descriptionStringNoDescription for the FileSet
ConnectorContext Object Properties:
PropertyTypeRequiredDescription
connectorStringYesThe connector key
relativePathStringNoRelative path for the connector (nullable)
domo
  .post('/domo/files/v1/filesets', {
    name: 'Sample FileSet',
    description: 'A sample FileSet for demonstration purposes.',
    // accountId: 12345, // Optional
    // connectorContext: { connector: 'S3', relativePath: 'bucket/path' }, // Optional
  })
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "id": "00000000-0000-0000-0000-000000000012",
  "name": "Sample FileSet",
  "description": "A sample FileSet for demonstration purposes.",
  "created": "2025-01-01T00:00:00.000Z",
  "createdBy": 111111111
}

Get FileSet by Id

Method: GET Endpoint: /domo/files/v1/filesets/{filesetId} Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
domo
  .get(`/domo/files/v1/filesets/${filesetId}`)
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "id": "00000000-0000-0000-0000-000000000013",
  "name": "Sample FileSet",
  "description": "A sample FileSet for demonstration purposes.",
  "created": "2025-01-01T00:00:00.000Z",
  "createdBy": 111111111
}

Update FileSet by Id

Method: POST
Endpoint: /domo/files/v1/filesets/{filesetId}
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
Request Body Parameters:
ParameterTypeRequiredDescription
nameStringNoThe new name for the FileSet
descriptionStringNoThe new description for the FileSet
domo
  .post(`/domo/files/v1/filesets/${filesetId}`, {
    name: 'Updated FileSet Name', // Optional: New name for the FileSet
    description: 'Updated description.', // Optional: New description
  })
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "id": "00000000-0000-0000-0000-000000000014",
  "name": "Sample FileSet",
  "description": "A sample FileSet for demonstration purposes.",
  "created": "2025-01-01T00:00:00.000Z",
  "createdBy": 111111111
}

Delete FileSet by Id

Method: DELETE
Endpoint: /domo/files/v1/filesets/{filesetId}
Path Parameters:
ParameterTypeRequiredDescription
filesetIdStringYesThe ID of the FileSet
domo
  .delete(`/domo/files/v1/filesets/${filesetId}`)
  .then((result) => console.log(result))
  .catch((error) => console.error(`Error: ${error}`));
Response:
{
  "status": "success",
  "message": "FileSet deleted successfully."
}