curl --request GET \
--url https://jmpy.me/api/v1/qr-codes \
--header 'Authorization: Bearer <token>'{
"success": true,
"data": {
"qrCodes": [
{
"id": "<string>",
"name": "<string>",
"content": "<string>",
"content_type": "<string>",
"content_data": {},
"dataURL": "<string>",
"is_dynamic": true,
"tracking_enabled": true,
"scan_count": 123,
"short_url_id": "<string>",
"visual_settings": {},
"expires_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
],
"pagination": {
"page": 123,
"limit": 123,
"totalCount": 123,
"totalPages": 123,
"hasNext": true,
"hasPrev": true
}
}
}Retrieve a paginated list of your QR codes
curl --request GET \
--url https://jmpy.me/api/v1/qr-codes \
--header 'Authorization: Bearer <token>'{
"success": true,
"data": {
"qrCodes": [
{
"id": "<string>",
"name": "<string>",
"content": "<string>",
"content_type": "<string>",
"content_data": {},
"dataURL": "<string>",
"is_dynamic": true,
"tracking_enabled": true,
"scan_count": 123,
"short_url_id": "<string>",
"visual_settings": {},
"expires_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
],
"pagination": {
"page": 123,
"limit": 123,
"totalCount": 123,
"totalPages": 123,
"hasNext": true,
"hasPrev": true
}
}
}dataURL for each item, allowing immediate use/display of the QR code images.100.QR_CODE_GENERATOR, BULK_IMPORT, URL_SHORTENERstatic, dynamic, tracked, alllast_hour, last_24_hours, last_7_days, last_30_days, last_year, all_timename, scans, created_atasc or desc.Show Response Structure
Show QR Code Object
url, text, wifi, vcard, etc.# Basic list request
curl -X GET "https://jmpy.me/api/v1/qr-codes?page=1&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
# With filters
curl -X GET "https://jmpy.me/api/v1/qr-codes?qrType=dynamic&dateRange=last_7_days&sortBy=scans&sortOrder=desc" \
-H "Authorization: Bearer YOUR_API_KEY"
# Search by name
curl -X GET "https://jmpy.me/api/v1/qr-codes?search=product&limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
const fetch = require('node-fetch');
// Build query parameters
const params = new URLSearchParams({
page: 1,
limit: 20,
qrType: 'dynamic', // Optional: filter by type
dateRange: 'last_7_days', // Optional: filter by date
sortBy: 'created_at', // Optional: sort field
sortOrder: 'desc' // Optional: sort direction
});
const response = await fetch(
`https://jmpy.me/api/v1/qr-codes?${params}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await response.json();
// Access QR codes
data.data.qrCodes.forEach(qr => {
console.log(`${qr.name}: ${qr.scan_count} scans`);
});
// Pagination info
console.log(`Page ${data.data.pagination.page} of ${data.data.pagination.totalPages}`);
import axios from 'axios';
interface QRCode {
id: string;
name: string;
content: string;
content_type: string;
is_dynamic: boolean;
tracking_enabled: boolean;
scan_count: number;
dataURL: string;
created_at: string;
}
interface PaginatedResponse {
qrCodes: QRCode[];
pagination: {
page: number;
limit: number;
totalCount: number;
totalPages: number;
hasNext: boolean;
hasPrev: boolean;
};
}
const response = await axios.get<{ success: boolean; data: PaginatedResponse }>(
'https://jmpy.me/api/v1/qr-codes',
{
headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
params: { page: 1, limit: 20, qrType: 'dynamic' }
}
);
const { qrCodes, pagination } = response.data.data;
console.log(`Found ${pagination.totalCount} QR codes`);
import requests
# Build parameters
params = {
'page': 1,
'limit': 20,
'qrType': 'dynamic', # Optional: static, dynamic, tracked, all
'dateRange': 'last_7_days', # Optional: filter by date
'sortBy': 'created_at', # Optional: name, scans, created_at
'sortOrder': 'desc' # Optional: asc, desc
}
response = requests.get(
'https://jmpy.me/api/v1/qr-codes',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params=params
)
data = response.json()
if data['success']:
qr_codes = data['data']['qrCodes']
pagination = data['data']['pagination']
for qr in qr_codes:
print(f"{qr['name']}: {qr.get('scan_count', 0)} scans")
print(f"Page {pagination['page']} of {pagination['totalPages']}")
<?php
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://jmpy.me/api/v1/qr-codes', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY'
],
'query' => [
'page' => 1,
'limit' => 20,
'qrType' => 'dynamic', // Optional
'sortBy' => 'created_at', // Optional
'sortOrder' => 'desc' // Optional
]
]);
$data = json_decode($response->getBody(), true);
foreach ($data['data']['qrCodes'] as $qr) {
echo $qr['name'] . ": " . $qr['scan_count'] . " scans\n";
}
?>
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
baseURL := "https://jmpy.me/api/v1/qr-codes"
params := url.Values{}
params.Add("page", "1")
params.Add("limit", "20")
params.Add("qrType", "dynamic")
params.Add("sortBy", "created_at")
params.Add("sortOrder", "desc")
reqURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
req, _ := http.NewRequest("GET", reqURL, nil)
req.Header.Add("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
fmt.Println("Response status:", resp.Status)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.URI;
import java.net.http.HttpResponse;
String url = "https://jmpy.me/api/v1/qr-codes?page=1&limit=20&qrType=dynamic";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"success": true,
"data": {
"qrCodes": [
{
"id": "770e8400-e29b-41d4-a716-446655440000",
"name": "Product Launch QR",
"content": "https://jmpy.me/xyz789",
"content_type": "url",
"content_data": {
"url": "https://example.com/product"
},
"dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...",
"is_dynamic": true,
"tracking_enabled": true,
"scan_count": 523,
"short_url_id": "550e8400-e29b-41d4-a716-446655440000",
"visual_settings": {
"foregroundColor": "#1a1a1a",
"backgroundColor": "#ffffff",
"size": 400
},
"expires_at": null,
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-20T14:22:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"totalCount": 15,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}
}
{
"success": false,
"error": {
"code": "AUTHENTICATION_REQUIRED",
"message": "Authentication is required to access this resource"
}
}
Paginate through all QR codes
async function getAllQRCodes() {
let allQRCodes = [];
let page = 1;
let hasMore = true;
while (hasMore) {
const response = await fetch(
`https://jmpy.me/api/v1/qr-codes?page=${page}&limit=100`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await response.json();
allQRCodes = allQRCodes.concat(data.data.qrCodes);
hasMore = data.data.pagination.hasNext;
page++;
}
return allQRCodes;
}
Find top performing QR codes
response = requests.get(
'https://jmpy.me/api/v1/qr-codes',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'sortBy': 'scans',
'sortOrder': 'desc',
'limit': 10
}
)
top_qrs = response.json()['data']['qrCodes']
for qr in top_qrs:
print(f"{qr['name']}: {qr.get('scan_count', 0)} scans")
Search for specific QR codes
curl -X GET "https://jmpy.me/api/v1/qr-codes?search=marketing&qrType=dynamic" \
-H "Authorization: Bearer YOUR_API_KEY"