Authentication
Aspect API keys start withsk_. Send your key in the Authorization header - the Bearer prefix is accepted but optional:
GET /users/me a quick way to verify your setup.
Creating an API key
1
Open settings
In the Aspect web app, open Settings and go to the API Keys page under your personal settings.
2
Create a key
Click Create new API Key and give it a descriptive name.
3
Copy it immediately
The key value is shown only once at creation time - it cannot be retrieved again. Store it somewhere safe.
An API key acts as you: every request is checked against your own workspace and project permissions. Keep keys out of client-side code and public repositories.
POST /api-keys creates a key, GET /api-keys lists your keys (metadata only, never the key values), and DELETE /api-keys/{api_key_id} revokes one.
Resource model
Everything in Aspect lives in a simple hierarchy:- Workspace: the top-level organization unit. Users belong to workspaces.
- Project: a container inside a workspace that holds directories and assets.
- Directory: a folder within a project. The app calls directories folders. Directories can nest.
- Asset: a video, image, audio, or document file that Aspect indexes with AI.
- Collection: a user-curated grouping of assets and directories within a project.
Request conventions
- Request and response bodies are JSON. IDs are UUIDs.
- Responses may include fields not listed in this reference. Don’t rely on them; they can change without notice.
- Response codes depend on the endpoint. Check the expected status code and response body when integrating an endpoint. Failures are described under Errors.
- Many list endpoints are
POSTrequests with a JSON body rather thanGET- for examplePOST /assets/listandPOST /directories/listtake a requiredparent_idplus optionallimit,offset,filters, andsorts. Other lists useoffset/limitquery parameters. Check each endpoint’s page in the reference for its exact shape.
Errors
A failed request returns a standard HTTP status code and a JSON body whosedetail field says what went wrong:
A
422 lists each invalid field:
X-Request-ID header. Include it when you contact support about a failed request.
Uploading and downloading files
Use the Aspect CLI to transfer files from a terminal, script, CI job, or AI agent. On headless machines, supply the samesk_ API key through the ASPECT_API_KEY environment variable; no aspect auth login step is needed. See headless authentication for setup.
--replace to overwrite them or --keep-both to preserve both copies.
A signed-in Aspect desktop app takes precedence over
ASPECT_API_KEY. Use aspect auth status --json to check how the CLI is authenticated. See authentication for desktop and stored-key behavior.Endpoint reference
Browse the API Endpoints section of the sidebar for request and response schemas for the documented REST endpoints.Embedding share links
Share links for single assets support oEmbed, so tools that understand it (Notion, Slack, WordPress, and others) can turn a pasted share link into an inline player. Share pages advertise the endpoint with a<link rel="alternate" type="application/json+oembed"> discovery tag, and you can call it directly. No API key is needed:
type is video for video assets and rich for everything else, and html is an <iframe> that plays the asset. Pass maxwidth and maxheight to scale the embed down.
- Only shares of a single asset embed; folder and collection shares return
404. - Password-protected shares return
401and cannot be embedded. Inactive or expired shares return404. - Only
format=jsonis supported.
Beyond REST
MCP server
Connect Claude, ChatGPT, Cursor, or any MCP client to your Aspect library through our hosted MCP server.