Configuration

Configure the Repost Java client: credential precedence, timeouts, retries, in-flight budgets, and proxy, TLS, and mTLS transport options.

RepostClient.create() reads the environment. To configure explicitly, build ClientOptions and pass it to create(ClientOptions):

ClientOptions options = ClientOptions.builder()
        .apiKey(System.getenv("REPOST_SEND_API_KEY"))
        .baseUri("https://api.repost.sh")
        .operationTimeout(Duration.ofSeconds(30))
        .maxAttempts(4)
        .maxInFlightOperations(128)
        .build();
return RepostClient.create(options);

Credential and endpoint precedence

Credential precedence, highest first: a .apiKeyProvider(...) (resolved per send) → a fixed .apiKey(...) → the REPOST_SEND_API_KEY environment variable → the REPOST_TOKEN environment variable. With none set, the first send fails with a CONFIGURATION error and never touches the network. Base URI: an explicit .baseUri(...)REPOST_API_URL → the default https://api.repost.sh. Plain http:// is accepted only for loopback hosts.

Defaults

The defaults are production-ready:

OptionDefaultNotes
connectTimeout10sConnection establishment.
attemptTimeout30sOne HTTP attempt.
operationTimeout120sWhole operation, including retries: the one deadline that bounds a send.
maxAttempts41–10. Transport attempts before giving up.
retryBaseDelay / retryMaxDelay250ms / 60sExponential backoff with jitter.
maxInFlightOperations2561–65536. Bounded admission. See Reliability.
maxBufferedBytes64 MiB4 MiB–1 GiB. Aggregate request/response byte budget.

ClientOptions.toString() is redacted: it never prints your credential.

Proxy, TLS, and mTLS

Build HttpTransportOptions and pass it via .httpTransportOptions(...): an explicit HttpProxyOptions (with an optional credentials provider), a borrowed SSLContext for a custom truststore or mutual TLS, and an allowlisted TLS protocol (TLS 1.2/1.3) and cipher list. HTTP redirects are disabled.

Continue