SDKs
Java SDK
Java 17+ SDK with builder patterns
Java SDK
The official Java SDK for the AllScreenshots API. Requires Java 17 or higher.
Source code: GitHub | Maven: com.allscreenshots.sdk:allscreenshots-sdk
Installation
Maven
<dependency>
<groupId>com.allscreenshots.sdk</groupId>
<artifactId>allscreenshots-sdk</artifactId>
<version>1.0.0</version>
</dependency>Gradle (Kotlin DSL)
dependencies {
implementation("com.allscreenshots.sdk:allscreenshots-sdk:1.0.0")
}Gradle (Groovy)
dependencies {
implementation 'com.allscreenshots.sdk:allscreenshots-sdk:1.0.0'
}Quick start
import com.allscreenshots.sdk.AllscreenshotsClient;
import com.allscreenshots.sdk.models.ScreenshotRequest;
import java.nio.file.Files;
import java.nio.file.Path;
public class Example {
public static void main(String[] args) throws Exception {
AllscreenshotsClient client = AllscreenshotsClient.builder().build();
byte[] image = client.screenshots().capture(
ScreenshotRequest.builder()
.url("https://example.com")
.device("Desktop HD")
.fullPage(true)
.build()
);
Files.write(Path.of("screenshot.png"), image);
}
}Configuration
Builder pattern
AllscreenshotsClient client = AllscreenshotsClient.builder()
.apiKey("your-api-key")
.baseUrl("https://api.allscreenshots.com")
.timeout(Duration.ofSeconds(60))
.maxRetries(3)
.build();Environment variables
Set ALLSCREENSHOTS_API_KEY to automatically configure authentication:
// Client will read API key from environment
AllscreenshotsClient client = AllscreenshotsClient.builder().build();Capture screenshots
Basic capture
byte[] image = client.screenshots().capture(
ScreenshotRequest.builder()
.url("https://example.com")
.build()
);
Files.write(Path.of("screenshot.png"), image);With options
byte[] image = client.screenshots().capture(
ScreenshotRequest.builder()
.url("https://example.com")
.device("Desktop HD")
.format("png")
.fullPage(true)
.darkMode(true)
.blockAds(true)
.blockCookieBanners(true)
.delay(1000)
.build()
);Device presets
// Desktop
byte[] desktop = client.screenshots().capture(
ScreenshotRequest.builder()
.url("https://example.com")
.device("Desktop HD")
.build()
);
// Mobile
byte[] mobile = client.screenshots().capture(
ScreenshotRequest.builder()
.url("https://example.com")
.device("iPhone 15")
.build()
);
// Tablet
byte[] tablet = client.screenshots().capture(
ScreenshotRequest.builder()
.url("https://example.com")
.device("iPad Pro 11")
.build()
);Async jobs
For long-running captures:
// Create async job
Job job = client.screenshots().captureAsync(
ScreenshotRequest.builder()
.url("https://example.com")
.fullPage(true)
.build()
);
System.out.println("Job ID: " + job.getJobId());
// Poll for completion
JobStatus status = client.jobs().get(job.getJobId());
if ("completed".equals(status.getStatus())) {
byte[] imageData = client.jobs().getResult(job.getJobId());
Files.write(Path.of("screenshot.png"), imageData);
}Bulk capture
Process multiple URLs efficiently:
BulkJob bulkJob = client.bulk().create(
BulkRequest.builder()
.urls(List.of(
BulkUrl.of("https://example1.com"),
BulkUrl.of("https://example2.com"),
BulkUrl.of("https://example3.com")
))
.defaults(BulkDefaults.builder()
.device("Desktop HD")
.format("png")
.build())
.build()
);
// Check status
BulkJobStatus status = client.bulk().get(bulkJob.getBulkJobId());Composition
Combine multiple screenshots into a single image:
byte[] composed = client.screenshots().compose(
ComposeRequest.builder()
.url("https://example.com")
.variants(List.of(
Variant.builder().device("Desktop HD").label("Desktop").build(),
Variant.builder().device("iPhone 15").label("Mobile").build()
))
.output(OutputOptions.builder()
.layout("horizontal")
.spacing(20)
.build())
.build()
);Schedules
Create recurring screenshot captures:
// Create a schedule
Schedule schedule = client.schedules().create(
CreateScheduleRequest.builder()
.name("Daily Homepage")
.url("https://example.com")
.schedule("0 9 * * *")
.timezone("America/New_York")
.build()
);
// List schedules
List<Schedule> schedules = client.schedules().list();
// Get captures
List<Capture> captures = client.schedules().getCaptures(schedule.getScheduleId());Usage tracking
Monitor your API usage:
Usage usage = client.usage().get();
System.out.printf("Screenshots: %d/%d%n", usage.getScreenshotCount(), usage.getQuota());Error handling
import com.allscreenshots.sdk.exceptions.*;
try {
byte[] image = client.screenshots().capture(request);
} catch (RateLimitException e) {
System.out.println("Rate limited. Retry after " + e.getRetryAfter() + "s");
} catch (AuthenticationException e) {
System.out.println("Invalid API key");
} catch (ValidationException e) {
System.out.println("Validation error: " + e.getMessage());
} catch (AllscreenshotsException e) {
System.out.println("API error: " + e.getMessage());
}Requirements
- Java 17 or higher
License
Apache License 2.0