# HubSpot Files API

> HubSpot Files API on Apizie: 19 endpoints (Upload file, Import File, Retrieve status, Search files, …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://zieapi.vercel.app/v1/open-data:hubapi-files/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `open-data:hubapi-files`
- Category: Open Data
- Status: byok
- Source: https://developers.hubspot.com/docs/api/overview
- Page: https://zieapi.vercel.app/api/open-data/hubapi-files
- OpenAPI: https://zieapi.vercel.app/api/open-data/hubapi-files/openapi.json

Basepom for all HubSpot Projects

## Endpoints

### Upload file
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/post-files-2026-09-files` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | Form fields as a JSON object |

### Import File
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/post-files-2026-09-files-import-from-url-async` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### Retrieve status
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-files-import-from-url-async-tasks-task-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| taskId | string | yes | The ID of the asynchronous file import task. |

### Search files
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-files-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| after | string | no | A cursor token for pagination, indicating the last successfully read resource. |
| allowsAnonymousAccess | boolean | no | Filter files based on whether they allow anonymous access. |
| before | string | no | A cursor token for pagination, indicating the first successfully read resource. |
| createdAt | string | no | Filter files created at this specific date and time. |
| createdAtGte | string | no | Filter files created on or after this date and time. |
| createdAtLte | string | no | Filter files created on or before this date and time. |
| encoding | string | no | Filter files by their encoding type. |
| expiresAt | string | no | Filter files by their expiration date and time. |
| expiresAtGte | string | no | Filter files expiring on or after this date and time. |
| expiresAtLte | string | no | Filter files expiring on or before this date and time. |
| extension | string | no | Filter files by their file extension. |
| fileMd5 | string | no | Filter files by their MD5 hash. |
| height | integer | no | Filter files by their exact height. |
| heightGte | integer | no | Filter files with height greater than or equal to this value. |
| heightLte | integer | no | Filter files with height less than or equal to this value. |
| idGte | integer | no | Filter files with IDs greater than or equal to this value. |
| idLte | integer | no | Filter files with IDs less than or equal to this value. |
| ids | array | no | A list of file IDs to filter the results. |
| isUsableInContent | boolean | no | Filter files based on whether they are usable in content. |
| limit | integer | no | The maximum number of results to display per page. |
| name | string | no | Filter files by name. |
| parentFolderIds | array | no | A list of parent folder IDs to filter the results. |
| path | string | no | Filter files by their path. |
| properties | array | no | A list of property names to include in the response. |
| size | integer | no | Filter files by their exact size. |
| sizeGte | integer | no | Filter files with size greater than or equal to this value. |
| sizeLte | integer | no | Filter files with size less than or equal to this value. |
| sort | array | no | A list of fields to sort the results by. |
| type | string | no | Filter files by their type. |
| updatedAt | string | no | Filter files updated at this specific date and time. |
| updatedAtGte | string | no | Filter files updated on or after this date and time. |
| updatedAtLte | string | no | Filter files updated on or before this date and time. |
| url | string | no | Filter files by their URL. |
| width | integer | no | Filter files by their exact width. |
| widthGte | integer | no | Filter files with width greater than or equal to this value. |
| widthLte | integer | no | Filter files with width less than or equal to this value. |

### Retrieve file stats
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-files-stat-path` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | yes | The path of the file or folder for which statistics are being retrieved. This is a required parameter and must be a valid path string. |
| properties | array | no | A list of specific properties to include in the response. This parameter is optional and can be used to customize the data returned. |

### Retrieve file
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-files-file-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | The unique identifier of the file to retrieve. |
| properties | array | no | A comma-separated list of property names to include in the response. |

### Update file
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/put-files-2026-09-files-file-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | The unique identifier of the file to update. |
| body | object | no | Form fields as a JSON object |

### Update file
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/patch-files-2026-09-files-file-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | The ID of the file to update. |
| body | object | yes | JSON request body |

### Delete file
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/delete-files-2026-09-files-file-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | The ID of the file to delete. |

### Download file
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-files-file-id-download` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | The ID of the file to download. |

### GDPR Delete file
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/delete-files-2026-09-files-file-id-gdpr-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | The ID of the file to be deleted. |

### Generate signed URL
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-files-file-id-signed-url` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | The unique identifier of the file for which to generate a signed URL. |
| expirationSeconds | integer | no | The duration in seconds for which the signed URL will remain valid. |
| size | string | no | The desired size of the file. Valid values are 'thumb', 'icon', 'medium', and 'preview'. |
| upscale | boolean | no | A boolean indicating whether the image should be upscaled if necessary. |

### Create folder
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/post-files-2026-09-folders` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### Search folders
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-folders-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| after | string | no | A cursor token for pagination. Use the value from the previous response's paging.next.after field. |
| before | string | no | A cursor token for pagination. Use the value from the previous response's paging.prev.before field. |
| createdAt | string | no | Filter folders created at this exact epoch timestamp. |
| createdAtGte | string | no | Filter results where the creation date is greater than or equal to this epoch timestamp. |
| createdAtLte | string | no | Filter results to folders created before or at this epoch timestamp. |
| idGte | integer | no | Filter results to include only folders with IDs greater than or equal to this value. |
| idLte | integer | no | Filter to include folders with IDs less than or equal to this value. |
| ids | array | no | A list of folder IDs to filter the results. |
| limit | integer | no | The maximum number of results to display per page. |
| name | string | no | Filter folders by this name. |
| parentFolderIds | array | no | A list of parent folder IDs to filter the results. |
| path | string | no | Filter results to folders with this specific path. |
| properties | array | no | A list of property names to include in the response. |
| sort | array | no | A list of property names to sort by in the response. |
| updatedAt | string | no | Filter results to include only folders updated at this exact epoch timestamp. |
| updatedAtGte | string | no | Filter results to folders updated at or after this epoch timestamp. |
| updatedAtLte | string | no | Filter folders updated at or before this epoch timestamp. |

### Retrieve folder
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-folders-folder-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| folderId | string | yes | The ID of the folder to retrieve. |
| properties | array | no | A comma-separated list of folder property names to include in the response. |

### Update folder
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/patch-files-2026-09-folders-folder-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| folderId | string | yes | The ID of the folder to update. |
| body | object | yes | JSON request body |

### Delete folder by ID
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/delete-files-2026-09-folders-folder-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| folderId | string | yes | The ID of the folder to delete. |

### Retrieve folder by path
`GET https://zieapi.vercel.app/v1/open-data:hubapi-files/get-files-2026-09-folders-folder-path` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| folderPath | string | yes | The path of the folder to retrieve. |
| properties | array | no | A comma-separated list of property names to include in the response. This allows you to specify which folder properties you want to… |

### Delete folder by path
`POST https://zieapi.vercel.app/v1/open-data:hubapi-files/delete-files-2026-09-folders-folder-path` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| folderPath | string | yes | The path of the folder to delete. |

## Example
```
curl "https://zieapi.vercel.app/v1/open-data:hubapi-files/post-files-2026-09-files" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the HubSpot Files API?
Create a free Apizie key, then send POST https://zieapi.vercel.app/v1/open-data:hubapi-files/post-files-2026-09-files with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the HubSpot Files API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. HubSpot Files itself also needs your own key from hubapi.com.

### Can AI agents use the HubSpot Files API?
Yes. Add the Apizie MCP server (https://zieapi.vercel.app/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key open-data:hubapi-files.

### What is the status of the HubSpot Files API?
Needs your own provider key (bring your own key)
