Integrate PicPulse Into Any Website
Drop interactive galleries, photo albums, custom <pic-icon> components, or ultra-fast edge CDN hotlinks into your site in under 30 seconds.
Choose your preferred integration style below. Whether you want a single HTML tag, a rich gallery widget, or a raw CDN image link, everything works immediately without authorization headers.
<!-- 1. Include the PicPulse SDK in your <head> or before </body> -->
<script src="https://picpulse.lushai.dev/cdn/sdk.js" async></script>
<!-- 2. Render an entire interactive picture gallery (with lightbox) -->
<div data-picpulse-gallery="all" data-limit="12" data-sort="newest"></div>
<!-- 3. Or render pictures from a specific album -->
<div data-picpulse-album="YOUR_ALBUM_TOKEN"></div>
<!-- 4. Or drop in a standalone icon / asset anywhere -->
<pic-icon name="javascript-programming-language-logo-cd57" size="48"></pic-icon>
Customize your integration below. Pick an asset, choose your format and integration style, and instantly copy the ready-to-use snippet directly to your clipboard.
Loading code...
PicPulse serves all public assets directly over high-speed edge caching with full CORS (Access-Control-Allow-Origin: *), ETag validation, and HTTP 304 Not Modified headers. Both extensionless slugs and format-suffixed URLs are fully supported.
| Delivery Channel | Live Clickable URL | Optimal Use Case |
|---|---|---|
High-Speed CDN |
https://picpulse.lushai.dev/cdn/javascript-programming-language-logo-cd57.png | Direct edge hotlink with browser cache and gzip/brotli compression. |
400px Thumbnail |
https://picpulse.lushai.dev/thumb/javascript-programming-language-logo-cd57 | Lightweight 400px thumbnail stream for preview cards and mobile feeds. |
Raw Asset Stream |
https://picpulse.lushai.dev/raw/javascript-programming-language-logo-cd57 | Byte-identical original upload stream with pristine color profiles. |
Canonical Showcase |
https://picpulse.lushai.dev/i/javascript-programming-language-logo-cd57 | Public page with EXIF metadata, dimensions, and embed code viewer. |
Test our public REST endpoints live in your browser. Notice how every request succeeds without passing any API key or secret token!
{
"notice": "PicPulse REST API requires zero API keys for all read operations. Click 'Execute Request' to fetch live JSON!"
}
Comprehensive parameter guide for all public API endpoints. All endpoints return standardized UTF-8 JSON with HTTP status codes.
Paginate, filter, and search public pictures. No API key required.
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number for pagination. |
limit | integer | 24 | Results per page (max 100). |
q | string | — | Search keywords — slug, title, tags, description. |
category | string | — | Filter by category (e.g. technology, wallpaper). |
tag | string | — | Filter assets containing a specific tag. |
sort | string | newest | newest · oldest · popular · views · size |
Retrieve full metadata for a single asset by slug or numeric ID. Increments view counter.
List all public albums with cover thumbnails, titles, descriptions, and picture counts.
Retrieve all public pictures organized inside a specific album.
List all image categories with public picture counts.
Retrieve the most popular public tags with usage counts (top 60).
Global platform statistics: total images, views, bandwidth, and album count.
Health check — returns API status, server timestamp, version, and app name.
Ready-to-use snippets for your favorite language or framework. None of them require API keys or backend tokens.
import React, { useEffect, useState } from 'react';
export default function PicPulseGallery() {
const [images, setImages] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch('https://picpulse.lushai.dev/api/v1/images?limit=8&sort=newest')
.then(res => res.json())
.then(res => {
if (res.status === 'success') setImages(res.data);
setLoading(false);
})
.catch(() => setLoading(false));
}, []);
if (loading) return <div>Loading PicPulse pictures...</div>;
return (
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))', gap: '16px' }}>
{images.map(img => (
<div key={img.id} style={{ borderRadius: '8px', overflow: 'hidden', background: '#111' }}>
<img src={img.urls.thumbnail_url} alt={img.title} style={{ width: '100%', height: '160px', objectFit: 'cover' }} loading="lazy" />
<div style={{ padding: '8px 12px', fontSize: '13px', color: '#fff' }}>{img.title}</div>
</div>
))}
</div>
);
}