VSCO Files API
The Files API from VSCO — 2 operation(s) for files.
The Files API from VSCO — 2 operation(s) for files.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/vsco-files-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: VSCO Workspace Brands Files API
termsOfService: https://terms-of-service.vsco.page/
description: This API is for interacting with a single Studio using <a href="https://workspace.vsco.co/settings/api" target="_blank">an API Key</a>.
contact:
name: VSCO Workspace Support
url: https://help.workspace.vsco.co/
email: workspace-support@vsco.co
version: v2.0.0
x-logo:
url: https://workspace.vsco.co/static/Images/Public/Logo.Black.vsco.svg
altText: VSCO Workspace
servers:
- url: https://tave.io/v2
description: Legacy Táve API production environment
- url: https://workspace.vsco.co/api/v2
description: Workspace API production environment
security:
- ApiKeyAuth: []
- BearerAuth: []
tags:
- name: Files
paths:
/file:
get:
summary: List files
operationId: listResourceFile
x-entity: Asset
tags:
- Files
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/includeHidden'
- $ref: '#/components/parameters/externalMappingId'
- $ref: '#/components/parameters/jobId'
- $ref: '#/components/parameters/contactId'
- name: sortBy
in: query
description: Sort items in the collection by the given property.
schema:
title: Sort objects by properties
type: string
anyOf:
- title: id
enum:
- id
- id asc
- id desc
- title: modified
enum:
- modified
- modified asc
- modified desc
- title: created
enum:
- created
- created asc
- created desc
- title: name
enum:
- name
- name asc
- name desc
default: id
responses:
'200':
description: File list response.
content:
application/json:
schema:
$ref: '#/components/schemas/FileCollection'
'400':
$ref: '#/components/responses/validationError'
'429':
$ref: '#/components/responses/tooManyRequestsError'
post:
summary: Create a file.
operationId: createResourceFile
tags:
- Files
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/File'
responses:
'201':
description: File creation response.
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'400':
$ref: '#/components/responses/validationError'
'429':
$ref: '#/components/responses/tooManyRequestsError'
/file/{id}:
get:
summary: Get a specific file
operationId: getResourceFile
tags:
- Files
parameters:
- $ref: '#/components/parameters/idInPath'
responses:
'200':
description: Fetch a specific File entity.
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'400':
$ref: '#/components/responses/validationError'
'429':
$ref: '#/components/responses/tooManyRequestsError'
put:
summary: Update a specific file.
operationId: updateResourceFile
tags:
- Files
parameters:
- $ref: '#/components/parameters/idInPath'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/File'
responses:
'200':
description: File response.
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'400':
$ref: '#/components/responses/validationError'
'429':
$ref: '#/components/responses/tooManyRequestsError'
delete:
summary: Delete a file.
operationId: deleteResourceFile
tags:
- Files
parameters:
- $ref: '#/components/parameters/idInPath'
responses:
'204':
$ref: '#/components/responses/deleteSuccess'
'400':
$ref: '#/components/responses/validationError'
'429':
$ref: '#/components/responses/tooManyRequestsError'
components:
parameters:
externalMappingId:
name: externalMappingId
in: query
description: Filter objects by an external id for this provider.
schema:
type: string
maxLength: 64
default: null
includeHidden:
name: includeHidden
in: query
description: Include objects that have been hidden
schema:
type: boolean
default: false
example: false
page:
name: page
in: query
description: The page of results to return.
schema:
type: integer
default: 1
minimum: 1
jobId:
name: jobId
in: query
description: Include objects attached to a job
schema:
$ref: '#/components/schemas/NullableId'
idInPath:
name: id
in: path
description: ULID to perform an action on.
schema:
$ref: '#/components/schemas/Id'
contactId:
name: contactId
in: query
schema:
$ref: '#/components/schemas/NullableId'
pageSize:
name: pageSize
in: query
description: Number of results per page to return in the collection.
schema:
type: integer
minimum: 10
maximum: 100
default: 100
schemas:
Error:
description: An error.
type: object
properties:
type:
description: A namespace URI uniquely identifying the error type.
type: string
enum:
- unknown
- quota-limit
- not-implemented
title:
description: A short description of the error encountered.
type: string
example: Bad Request
detail:
description: A longer description of of the error encountered.
type: string
example: There was a problem with your request. Please see `info` for more information.
status:
description: The HTTP status code associated with this error.
type: integer
example: 400
IsHidden:
title: Hidden attribute
description: Whether or not the object is hidden.
type: boolean
example: false
readOnly: true
NullableId:
title: Entity Identifier that might be null instead
description: A ULID entity identifier that is nullable.
type:
- string
- 'null'
format: ulid
example: 01fqcr215r79p3h19crqbpzwzh
Link:
title: Hypermedia Link Relationship
description: 'The target URL indicated in the `href` property is related to the
current resource according to the defined semantics of the link
property name.'
type: object
required:
- href
properties:
href:
description: The hypertext reference to the API resource at tave.io.
type: string
format: uri
managerHref:
description: The URL to this item inside the Manager application at workspace.vsco.co.
type: string
format: uri
clientHref:
description: The URL to this item in Client Access, if available.
type: string
format: uri
FileCollection:
allOf:
- properties:
type:
enum:
- file-collection
items:
title: Files
type: array
items:
$ref: '#/components/schemas/File'
- $ref: '#/components/schemas/List'
ErrorValidation:
description: A validation error.
type: object
properties:
type:
description: A namespace URI uniquely identifying the error type.
type: string
enum:
- validation-error
title:
description: A short description of the error encountered.
type: string
example: Validation Error
detail:
description: Breakdown of what fields valid validation and why
type: object
status:
description: The HTTP status code associated with this error.
type: integer
example: 400
ExternalMapping:
title: External Mapping
description: 'This is used to relate a unique entity id in an external system to an
entity inside of VSCO Workspace. These objects can not be updated currently.'
type: object
required:
- id
- url
properties:
id:
type: string
minLength: 1
maxLength: 64
url:
description: The url to the remote item.
type: string
format: uri
minLength: 12
maxLength: 255
ServerTimestamp:
title: Server Timestamp
description: A server timestamp (always in UTC)
type: string
format: date-time
readOnly: true
example: '2020-08-01T17:32:32Z'
Id:
title: Entity Identifier
description: A lowercase [ULID](https://github.com/ulid/spec) entity identifier
type: string
format: ulid
example: 01h35ccwymj5ctckp8px1azhg6
readOnly: true
File:
title: File
description: A file to attach to an entity
type: object
required:
- filename
properties:
links:
$ref: '#/components/schemas/Links'
id:
$ref: '#/components/schemas/Id'
created:
$ref: '#/components/schemas/ServerTimestamp'
modified:
$ref: '#/components/schemas/ServerTimestamp'
hidden:
$ref: '#/components/schemas/IsHidden'
attachedTo:
type:
- array
- 'null'
items:
type:
- object
- 'null'
properties:
entity:
type:
- string
- 'null'
enum:
- brand
- contact
- event
- gallery
- invoice
- invoice-item
- job
- payment
- product
- product-option
- null
id:
$ref: '#/components/schemas/NullableId'
link:
type:
- string
- 'null'
format: uri
readOnly: true
binaryData:
type: string
format: byte
writeOnly: true
maxLength: 20000000
createdByContactId:
$ref: '#/components/schemas/NullableId'
description:
type:
- string
- 'null'
maxLength: 1000
externalMappings:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ExternalMapping'
filename:
type: string
maxLength: 255
imageMetaData:
type:
- object
- 'null'
properties:
crop:
$ref: '#/components/schemas/ImageCrop'
focalPoint:
$ref: '#/components/schemas/ImageFocalPoint'
height:
type:
- integer
- 'null'
minimum: 0
maximum: 65535
readOnly: true
latitude:
type:
- number
- 'null'
longitude:
type:
- number
- 'null'
width:
type:
- integer
- 'null'
minimum: 0
maximum: 65535
readOnly: true
mimeType:
type:
- string
- 'null'
maxLength: 128
name:
type:
- string
- 'null'
maxLength: 255
remoteUrl:
type:
- string
- 'null'
format: uri
size:
type:
- integer
- 'null'
readOnly: true
typeId:
$ref: '#/components/schemas/NullableId'
url:
type:
- string
- 'null'
format: uri
readOnly: true
ImageFocalPoint:
title: Focal point properties for an image
type: object
properties:
x:
type:
- number
- 'null'
format: double
y:
type:
- number
- 'null'
format: double
ImageCrop:
title: Crop properties for an image
type: object
properties:
height:
type:
- integer
- 'null'
minimum: 0
maximum: 65535
left:
type:
- integer
- 'null'
minimum: 0
maximum: 65535
top:
type:
- integer
- 'null'
minimum: 0
maximum: 65535
width:
type:
- integer
- 'null'
minimum: 0
maximum: 65535
List:
title: Collection
description: A collection (or list) of resources.
type: object
required:
- type
- items
properties:
meta:
description: Metadata describing the current result set.
type: object
readOnly: true
properties:
currentPage:
description: The current page of results returned.
type: integer
totalPages:
description: 'The total number of pages in the result set. This is affected by
the `pageSize` parameter (`totalItems / pageSize == totalPages`).'
type: integer
totalItems:
description: 'The total number of items in the result set. This may be
affected by active search/filter parameters.'
type: integer
rows:
description: The number of rows returned per page for the current result set.
type: integer
type:
$ref: '#/components/schemas/ResourceType'
items:
description: A collection of resources returned in the current result set.
type: array
items:
type: object
ResourceType:
title: Resource Type
description: The type of resource represented.
type: string
example: resource-type
Links:
title: Link Relationships
description: 'Each property defines a hypertext link relationship as indicated by a
link object or array of link objects. The target URL of each hypertext
link relationship is related to the current resource according to the
defined semantics of the link relationship property name.'
readOnly: true
required:
- self
type: object
example: "\"self\": {\n \"href\": \"https://example.com/object-endpoint/03c41781-f06f-4402-a5d9-1c30ccb4db29\",\n \"title\": \"Example Link Relationship\",\n \"type\": \"application/json\",\n}"
properties:
self:
allOf:
- title: Self
description: The target URL is the current resource's own location.
- $ref: '#/components/schemas/Link'
responses:
deleteSuccess:
description: The resource was successfully deleted.
tooManyRequestsError:
description: Exceeded request quota, see Retry-After header
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
validationError:
description: 'Validation error response. Check the `info.errors` property in the
response for more details.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorValidation'
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-KEY
BearerAuth:
type: http
scheme: bearer
x-tagGroups:
- name: Jobs & Contacts
tags:
- Jobs
- Job Contacts
- Job Worksheets
- Contacts
- Events
- Files
- Galleries
- Notes
- Orders
- Payment
- name: Studio Settings
tags:
- Studio
- Brands
- Custom Fields
- Discounts
- Discount Types
- Event Types
- File Types
- Job Closed Reasons
- Job Roles
- Job Types
- Lead Sources
- Lead Statuses
- Payment Methods
- Products
- Product Types
- Profit Centers
- Tax Groups
- Tax Rates
- Timezones
- Users
- name: API Resources
tags:
- Rest Hooks