-
Notifications
You must be signed in to change notification settings - Fork 298
Add screenshots API docs + blog #2702
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
9e137c2
Add screenshots API docs
adityaoberai 1dc25e8
Add geolocation permissions and wait time parameter to screenshots AP…
adityaoberai a4a017d
Add paragraph on benefits of screenshots api
adityaoberai e560ce4
Add enums to code examples
adityaoberai fb2f12d
Update src/routes/docs/products/avatars/screenshots/+page.markdoc
adityaoberai 22d515f
Add screenshots api announcement blog and changelog
adityaoberai 57a2a04
Update src/routes/docs/products/avatars/screenshots/+page.markdoc
adityaoberai c83188e
Update src/routes/docs/products/avatars/screenshots/+page.markdoc
adityaoberai b602127
Update src/routes/blog/post/announcing-screenshots-api/+page.markdoc
adityaoberai 4c62acf
Update src/routes/changelog/(entries)/2026-01-20.markdoc
adityaoberai 327af64
Update src/routes/changelog/(entries)/2026-01-20.markdoc
adityaoberai 2dd7629
Update src/routes/changelog/(entries)/2026-01-20.markdoc
adityaoberai b88fa97
Update src/routes/blog/post/announcing-screenshots-api/+page.markdoc
adityaoberai 701d422
Update src/routes/changelog/(entries)/2026-01-20.markdoc
adityaoberai b4e5cab
Apply suggestion from @adityaoberai
adityaoberai File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
103 changes: 103 additions & 0 deletions
103
src/routes/blog/post/announcing-screenshots-api/+page.markdoc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| --- | ||
| layout: post | ||
| title: "Announcing Screenshots API: Generate pixel-perfect webpage screenshots on demand" | ||
| description: Appwrite's new Screenshots API lets you generate screenshots of any public webpage with a single API call. Control browser environment, device settings, locale, and more without needing to configure your own headless browser infrastructure. | ||
| date: 2026-01-21 | ||
| cover: /images/blog/announcing-screenshots-api/cover.png | ||
| timeToRead: 5 | ||
| author: aditya-oberai | ||
| category: announcement | ||
| featured: false | ||
| callToAction: true | ||
| --- | ||
|
|
||
| Capturing consistent, high-quality screenshots of web pages is harder than it should be. | ||
|
|
||
| What starts as a simple requirement, “render this page as an image,” quickly turns into a fragile setup of headless browsers, custom scripts, and environment-specific workarounds. Fonts render differently across machines. Animations race your screenshot timer. Cookie banners and permission prompts block content. Pages behave one way locally and another in CI. Keeping screenshots reliable across devices, locales, and time zones often means babysitting a complex Playwright or Puppeteer pipeline that breaks the moment a browser update lands. | ||
|
|
||
| Most teams do not want to run their own headless browser infrastructure. They just want the result. | ||
|
|
||
| Today, we are excited to announce the **Screenshots API**, a new addition to **Appwrite Avatars**, that lets you generate fully customizable webpage screenshots with a single API call, without maintaining any headless browser infrastructure. | ||
|
|
||
| # Capture webpages exactly as users see them | ||
|
|
||
| The Screenshots API allows you to capture screenshots of any public webpage while controlling the browser environment in which it is rendered. | ||
|
|
||
| With one request, you can customize: | ||
|
|
||
| - Browser viewport size and device scale | ||
| - Light or dark theme rendering | ||
| - Full-page or viewport-only screenshots | ||
| - Custom headers, user agents and locales | ||
| - Timezone and geolocation simulation | ||
| - Touch support and browser permissions | ||
| - Output format, dimensions, and quality | ||
|
|
||
| This means your screenshots are no longer best guesses. They are accurate representations of real user experiences. | ||
|
|
||
| # Built for real-world developer workflows | ||
|
|
||
| Screenshots are not just images. They are an essential building block for modern developer workflows. | ||
|
|
||
| The Screenshots API is designed for use cases like: | ||
|
|
||
| - Generating visual documentation automatically | ||
| - Creating rich link previews for apps and dashboards | ||
| - Running QA checks across devices and browsers | ||
| - Validating responsive and localized layouts | ||
| - Archiving web pages for compliance and records | ||
| - Powering automated reports and visual dashboards | ||
|
|
||
| Instead of maintaining your own headless browser infrastructure, you can rely on a managed, consistent API that scales with your application. | ||
|
|
||
| # Simple API, powerful customization | ||
|
|
||
| Getting started with the Screenshots API is as simple as providing a URL. | ||
|
|
||
| ```js | ||
| import { Client, Avatars } from "appwrite"; | ||
|
|
||
| const client = new Client() | ||
| .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") | ||
| .setProject("<PROJECT_ID>"); | ||
|
|
||
| const avatars = new Avatars(client); | ||
|
|
||
| const screenshot = avatars.getScreenshot({ | ||
| url: "https://appwrite.io" | ||
| }); | ||
|
|
||
| console.log(screenshot); | ||
| ``` | ||
|
|
||
| From there, you can dial in exactly how the page should be rendered. | ||
|
|
||
| Capture mobile, tablet, or desktop views. Enable full-page scrolling. Render pages in dark mode. Simulate a specific country, language, or timezone. Even pre-grant browser permissions to avoid blocked or degraded states. | ||
|
|
||
| # Simulate browsers, devices, and locations | ||
|
|
||
| Modern web apps behave differently depending on where and how they are accessed. The Screenshots API lets you reflect that reality. | ||
|
|
||
| You can: | ||
|
|
||
| - Test responsive layouts across viewport sizes | ||
| - Verify localized content using different locales and timezones | ||
| - Capture region-specific content with geolocation simulation | ||
| - Render pages as touch devices or desktop browsers | ||
| - Validate pages that depend on browser permissions | ||
|
|
||
| This makes it easier to test, document, and ship with confidence. | ||
|
|
||
| # Part of Appwrite Avatars | ||
|
|
||
| The Screenshots API lives alongside other Avatars endpoints, making it easy to integrate into existing Appwrite projects. Whether you are generating previews, reports, or automated documentation, screenshots become just another API resource you can depend on. | ||
|
|
||
| # Available now | ||
|
|
||
| The Screenshots API is available today as part of Appwrite Avatars. You can start generating screenshots immediately using the Appwrite SDKs and REST API. | ||
|
|
||
| This API is already being used in production by [Imagine](https://imagine.dev) to generate real-time preview screenshots for projects built on the platform, validating it against real user traffic. | ||
|
|
||
| To get started, head over to the [documentation](/docs/products/avatars/screenshots) and try it out in your next project. | ||
|
|
||
| As always, we would love to see what you build with it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| --- | ||
| layout: changelog | ||
| title: "Announcing Screenshots API: Generate pixel-perfect webpage screenshots on demand" | ||
| date: 2026-01-21 | ||
| cover: /images/blog/announcing-screenshots-api/cover.png | ||
| --- | ||
|
|
||
| We're excited to announce the **Screenshots API**, a new addition to Appwrite Avatars that lets you generate fully customizable webpage screenshots with a single API call. | ||
|
|
||
| No more headless browser infrastructure to maintain. No more environment-specific workarounds. Just simple, reliable screenshot generation. | ||
|
|
||
| # What you can do | ||
|
|
||
| - Capture any public webpage as an image | ||
| - Simulate an authenticated experience via custom request headers | ||
| - Control browser viewport size and device scale | ||
| - Render in light or dark theme | ||
| - Simulate different locales, timezones, and geolocation | ||
| - Pre-grant browser permissions | ||
| - Generate full-page or viewport-only screenshots | ||
| - Customize output format, dimensions, and quality | ||
|
|
||
| The Screenshots API is available today as part of Appwrite Avatars and is already being used in production by [Imagine](https://imagine.dev). | ||
|
|
||
| {% arrow_link href="/docs/products/avatars/screenshots" %} | ||
| Get started with Screenshots API | ||
| {% /arrow_link %} | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.