Java Examples

Complete examples for using the yLnk API with Java.

Setup

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import com.fasterxml.jackson.databind.ObjectMapper;

public class YLnkAPI {
    private static final String API_KEY = "your-api-key-here";
    private static final String BASE_URL = "https://api.ylnk.cc/v2/external/client";
    private static final HttpClient client = HttpClient.newHttpClient();
    private static final ObjectMapper mapper = new ObjectMapper();

    private static HttpRequest.Builder requestBuilder(String endpoint) {
        return HttpRequest.newBuilder()
            .uri(URI.create(BASE_URL + endpoint))
            .header("X-API-Key", API_KEY)
            .header("Content-Type", "application/json");
    }
}
public static Map<String, Object> createShortLink(String originalUrl, Map<String, Object> options) throws Exception {
    Map<String, Object> data = new HashMap<>();
    data.put("originalUrl", originalUrl);
    if (options != null) {
        data.putAll(options);
    }

    String json = mapper.writeValueAsString(data);
    HttpRequest request = requestBuilder("/short-links")
        .POST(HttpRequest.BodyPublishers.ofString(json))
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    Map<String, Object> result = mapper.readValue(response.body(), Map.class);
    return (Map<String, Object>) result.get("data");
}

// Usage
Map<String, Object> options = new HashMap<>();
options.put("title", "My Link");
options.put("customUrl", "my-link");
Map<String, Object> link = createShortLink("https://example.com/very/long/url", options);
System.out.println("Created: " + link.get("shortUrl"));
public static Map<String, Object> updateShortLink(String id, Map<String, Object> updates) throws Exception {
    updates.put("id", id);
    String json = mapper.writeValueAsString(updates);
    
    HttpRequest request = requestBuilder("/short-links/" + id)
        .PUT(HttpRequest.BodyPublishers.ofString(json))
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    Map<String, Object> result = mapper.readValue(response.body(), Map.class);
    return (Map<String, Object>) result.get("data");
}

// Usage
Map<String, Object> updates = new HashMap<>();
updates.put("title", "Updated Title");
updates.put("isActive", true);
Map<String, Object> updated = updateShortLink("abc123", updates);
public static Map<String, Object> listShortLinks(int page, int size, Map<String, String> filters) throws Exception {
    StringBuilder params = new StringBuilder("?page=" + page + "&size=" + size);
    if (filters != null) {
        filters.forEach((k, v) -> {
            if (v != null) {
                params.append("&").append(k).append("=").append(URLEncoder.encode(v, StandardCharsets.UTF_8));
            }
        });
    }

    HttpRequest request = requestBuilder("/short-links" + params)
        .GET()
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    Map<String, Object> result = mapper.readValue(response.body(), Map.class);
    return (Map<String, Object>) result.get("data");
}

// Usage
Map<String, String> filters = new HashMap<>();
filters.put("search", "example");
filters.put("status", "active");
Map<String, Object> links = listShortLinks(1, 20, filters);
public static Map<String, Object> getShortLink(String id) throws Exception {
    HttpRequest request = requestBuilder("/short-links/" + id)
        .GET()
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    Map<String, Object> result = mapper.readValue(response.body(), Map.class);
    return (Map<String, Object>) result.get("data");
}

// Usage
Map<String, Object> link = getShortLink("abc123");
System.out.println("Clicks: " + link.get("visitCount"));

Get Analytics Details

public static Map<String, Object> getAnalyticsDetails(String shortUrl) throws Exception {
    String params = "?shortUrl=" + URLEncoder.encode(shortUrl, StandardCharsets.UTF_8);
    HttpRequest request = requestBuilder("/analytics/details" + params)
        .GET()
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    Map<String, Object> result = mapper.readValue(response.body(), Map.class);
    return (Map<String, Object>) result.get("data");
}

// Usage
Map<String, Object> details = getAnalyticsDetails("abc123");
System.out.println("Total clicks: " + details.get("visitCount"));