> For the complete documentation index, see [llms.txt](https://academy.shade.inc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.shade.inc/developers/readme.md).

# Developer documentation

Build on Shade with the REST API, S3 API, webhooks, and MCP server.

Build on Shade with the REST API, S3 API, webhooks, and MCP server. Connect Shade to your pipeline, upload from your own tools, react to changes in real time, and give AI agents access to your media.

<button type="button" class="button primary" data-action="ask" data-icon="gitbook-assistant">What are you trying to build?</button>

<a href="/developers/using-the-api/using-the-api.md" class="button primary">Make your first API call</a><a href="/developers/get-started/integrating-with-shade.md" class="button secondary" data-icon="plug">Integrating with Shade</a>

<h3 align="center">What do you want to build?</h3>

<p align="center">Pick a path. Most integrations combine two or three of these.</p>

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><h4><i class="fa-plug">:plug:</i></h4></td><td><h4>Connect your app</h4></td><td>Authenticate, find workspaces and drives, and read, download, and organize assets.</td><td><a data-mention href="/developers/get-started/integrating-with-shade.md">Integrating with Shade</a></td><td><a data-mention href="/developers/using-the-api/using-the-api.md">Intro</a></td><td><a data-mention href="/developers/using-the-api/working-with-assets.md">Working with assets</a></td></tr><tr><td><h4><i class="fa-cloud-arrow-up">:cloud-arrow-up:</i></h4></td><td><h4>Move files</h4></td><td>Upload from scripts, servers, and your own apps, or use any S3 client.</td><td><a data-mention href="/developers/guides/uploading-to-shade.md">Uploading to Shade</a></td><td><a data-mention href="/developers/guides/using-shades-s3-api.md">Using Shade's S3 API</a></td><td><a data-mention href="/developers/guides/writing-your-own-uploader.md">Writing your own uploader</a></td></tr><tr><td><h4><i class="fa-bolt">:bolt:</i></h4></td><td><h4>React to changes</h4></td><td>Get notified when files are uploaded, processed, commented on, or shared, or trigger automations from other services.</td><td><a data-mention href="/developers/guides/webhooks.md">Webhooks</a></td><td><a data-mention href="/developers/guides/synchronizing-file-state.md">Syncing &amp; reacting to file changes</a></td><td><a href="/developers/guides/webhooks.md#webhooks-in-automations">Webhooks in automations</a></td></tr><tr><td><h4><i class="fa-magnifying-glass">:magnifying-glass:</i></h4></td><td><h4>Find and organize</h4></td><td>Search with filters, tag assets with custom metadata, and share collections and links.</td><td><a data-mention href="/developers/using-the-api/searching-and-filtering-assets.md">Searching and filtering assets</a></td><td><a data-mention href="/developers/using-the-api/metadata-guide.md">Metadata Guide</a></td><td><a data-mention href="/developers/using-the-api/collections-and-share-links.md">Collections and share links</a></td></tr></tbody></table>

***

<h3 align="center">Build with AI</h3>

<p align="center">Give Claude, ChatGPT, Cursor, Codex, or your own agent access to a Shade workspace.</p>

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h4><i class="fa-sparkles">:sparkles:</i></h4></td><td><h4>Using the Shade MCP server</h4></td><td>Endpoint, OAuth, client configs, the full tool list, and connecting your own agent.</td><td><a href="/developers/guides/using-the-shade-mcp-server.md">Using the Shade MCP server</a></td></tr><tr><td><h4><i class="fa-robot">:robot:</i></h4></td><td><h4>MCP for everyone on your team</h4></td><td>The no-code setup guide for Claude, ChatGPT, Cursor, and VS Code users.</td><td><a href="https://academy.shade.inc/ai-tools/the-shade-mcp">https://academy.shade.inc/ai-tools/the-shade-mcp</a></td></tr></tbody></table>

***

<h3 align="center">Reference</h3>

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h4><i class="fa-brackets-curly">:brackets-curly:</i></h4></td><td><h4>API reference</h4></td><td>Every REST endpoint, generated from the Shade OpenAPI spec.</td><td><a href="https://academy.shade.inc/developers/workspaces">https://academy.shade.inc/developers/workspaces</a></td></tr><tr><td><h4><i class="fa-life-ring">:life-ring:</i></h4></td><td><h4>Help Center</h4></td><td>Network requirements, security, and troubleshooting.</td><td><a href="https://academy.shade.inc/help-center">https://academy.shade.inc/help-center</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://academy.shade.inc/developers/readme.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
