Allscreenshots Docs
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

On this page