AT-QR API Documentation

Introduction

The AT-QR API allows developers to generate, manage, track, and analyze QR codes programmatically. This documentation provides details on available endpoints, required parameters, and response formats.

Authentication

All API requests require authentication via an API key and user ID passed as GET parameters:

These parameters must be included in every request. Only users with 'business' or 'enterprise' roles can access the API.

Base URL

All endpoints are accessed via:

https://at-qr.com/api.php

Endpoints

Generate QR Code

GET /api.php?action=getQR

Generates a new QR code with the specified parameters.

Parameters

Parameter Required Description
action Yes Must be set to "getQR"
qr_option No Type of QR code ("static" or dynamic)
options Yes Type of data encoded in QR (e.g., "url", "text", etc.)
data Yes The data to encode in the QR code
custom_color No Custom color for QR code (hex format, e.g., "%23000000" for black)
textAbove No Text to display above the QR code
scans_allowed No Number of allowed scans (default: unlimited)
logo No Logo to embed in the QR code

Example Request

https://at-qr.com/api.php?action=getQR&qr_option=static&user_id=2&options=url&custom_color=%23000000&data=https://example.com&api_key=YOUR_API_KEY&textAbove=Example

Response

200 Success
{
    "status": "success",
    "message": "QR Code Created successfully.",
    "data": {
        "id": 123,
        "user_id": 2,
        "qr_type": "url",
        "qr_data": "https://example.com",
        "scans_allowed": "UNLIMITED",
        "qr_image_path": "https://at-qr.com/qr/qr_123.png",
        "ip": "192.168.1.1",
        "created_at": "2023-06-15 14:30:00"
    }
}

Search QR Codes

GET /api.php?action=searchQR

Retrieves a list of QR codes matching search criteria.

Parameters

Parameter Required Description
action Yes Must be set to "searchQR"
search_term No Term to search in QR code data
sort_term No Sorting option ("date_desc", "date_asc", "scans_left_desc", "scans_used_desc")
offset No Pagination offset (default: 0)
limit No Number of results per page (default: 10)

Example Request

https://at-qr.com/api.php?action=searchQR&user_id=2&api_key=YOUR_API_KEY&search_term=example&sort_term=date_desc&limit=5

Response

200 Success
{
    "status": "success",
    "message": "QR codes retrieved successfully.",
    "data": [
        {
            "id": 123,
            "qr_image_path": "https://at-qr.com/qr/qr_123.png",
            "qr_type": "url",
            "qr_data": "https://example.com",
            "scans_allowed": "UNLIMITED",
            "scans_used": 15,
            "scans_left": "UNLIMITED",
            "created_at": "2023-06-15 14:30:00"
        },
        ...
    ]
}

Edit QR Code

GET /api.php?action=editQR

Updates an existing QR code with new parameters. Note: Only dynamic QR codes can be edited.

Parameters

Parameter Required Description
action Yes Must be set to "editQR"
qr_id Yes ID of the QR code to edit
options Yes Type of data encoded in QR (e.g., "url", "text", etc.)
data Yes The new data to encode in the QR code
custom_color No Custom color for QR code (hex format)
textAbove No Text to display above the QR code
scans_allowed No Number of allowed scans (default: unlimited)
logo No Logo to embed in the QR code
qr_option No Type of QR code ("static" or dynamic)

Example Request

https://at-qr.com/api.php?action=editQR&qr_id=123&user_id=2&options=url&data=https://newexample.com&api_key=YOUR_API_KEY

Response

200 Success
{
    "status": "success",
    "message": "QR Code Edited successfully.",
    "data": {
        "id": 123,
        "user_id": 2,
        "qr_type": "url",
        "qr_data": "https://newexample.com",
        "scans_allowed": "UNLIMITED",
        "qr_image_path": "https://at-qr.com/qr/qr_123.png",
        "ip": "192.168.1.1",
        "created_at": "2023-06-15 14:30:00"
    }
}

Delete QR Code

GET /api.php?action=deleteQR

Deletes an existing QR code.

Parameters

Parameter Required Description
action Yes Must be set to "deleteQR"
qr_id Yes ID of the QR code to delete

Example Request

https://at-qr.com/api.php?action=deleteQR&qr_id=123&user_id=2&api_key=YOUR_API_KEY

Response

200 Success
{
    "status": "success",
    "message": "QR code deleted successfully."
}

QR Analytics

GET /api.php?action=qrAnalytics

Retrieves analytics data for a specific QR code.

Parameters

Parameter Required Description
action Yes Must be set to "qrAnalytics"
qr_id Yes ID of the QR code to get analytics for

Example Request

https://at-qr.com/api.php?action=qrAnalytics&qr_id=123&user_id=2&api_key=YOUR_API_KEY

Response

200 Success
{
    "totalScans": 150,
    "uniqueScanners": 120,
    "deviceType": "Mobile: 100 | Desktop: 50",
    "location": "New York, US (50 scans), London, UK (30 scans)",
    "timeReports": "14h (25 scans), 10h (20 scans)",
    "osBreakdown": {
        "Android": 60,
        "iOS": 40,
        "Windows": 30,
        "MacOS": 20
    },
    "browserBreakdown": {
        "Chrome": 80,
        "Safari": 40,
        "Firefox": 20,
        "Edge": 10
    },
    "botDetection": "5.33% suspected bot traffic",
    "duplicateScanStatus": "Low"
}

JavaScript Sample Connection Code

// Generate QR Code
async function generateQRCode() {
    const apiUrl = 'https://at-qr.com/api.php';
    const params = new URLSearchParams({
        action: 'getQR',
        qr_option: 'static',
        user_id: '2',
        options: 'url',
        custom_color: '#000000',
        data: 'https://example.com',
        api_key: 'c9f89dd51e96edbf52cfe04dc9c278dc',
        textAbove: 'Example QR',
        scans_allowed: 'unlimited'
    });

    try {
        const response = await fetch(`${apiUrl}?${params}`);
        const data = await response.json();
        console.log('QR Code Generated:', data);
        return data;
    } catch (error) {
        console.error('Error generating QR code:', error);
        throw error;
    }
}

// Search QR Codes
async function searchQRCodes() {
    const apiUrl = 'https://at-qr.com/api.php';
    const params = new URLSearchParams({
        action: 'searchQR',
        user_id: '2',
        api_key: 'c9f89dd51e96edbf52cfe04dc9c278dc',
        search_term: 'example',
        sort_term: 'date_desc',
        offset: '0',
        limit: '10'
    });

    try {
        const response = await fetch(`${apiUrl}?${params}`);
        const data = await response.json();
        console.log('QR Codes Found:', data);
        return data;
    } catch (error) {
        console.error('Error searching QR codes:', error);
        throw error;
    }
}

// Get QR Analytics
async function getQRAnalytics(qrId) {
    const apiUrl = 'https://at-qr.com/api.php';
    const params = new URLSearchParams({
        action: 'qrAnalytics',
        user_id: '2',
        api_key: 'c9f89dd51e96edbf52cfe04dc9c278dc',
        qr_id: qrId
    });

    try {
        const response = await fetch(`${apiUrl}?${params}`);
        const data = await response.json();
        console.log('QR Analytics:', data);
        return data;
    } catch (error) {
        console.error('Error fetching QR analytics:', error);
        throw error;
    }
}

// Example usage
generateQRCode().then(qrData => {
    // Handle QR code data
    return searchQRCodes();
}).then(searchResults => {
    // Handle search results
    if (searchResults.data.length > 0) {
        return getQRAnalytics(searchResults.data[0].id);
    }
}).catch(error => {
    // Handle error
});

Python Sample Connection Code

    
import requests

def generate_qr_code():
    api_url = "https://at-qr.com/api.php"
    params = {
        "action": "getQR",
        "qr_option": "static",
        "user_id": "2",
        "options": "url",
        "custom_color": "#000000",
        "data": "https://example.com",
        "api_key": "c9f89dd51e96edbf52cfe04dc9c278dc",
        "textAbove": "Example QR",
        "scans_allowed": "unlimited"
    }
    
    try:
        response = requests.get(api_url, params=params)
        response.raise_for_status()
        data = response.json()
        print("QR Code Generated:", data)
        return data
    except requests.exceptions.RequestException as error:
        print("Error generating QR code:", error)
        raise

def search_qr_codes():
    api_url = "https://at-qr.com/api.php"
    params = {
        "action": "searchQR",
        "user_id": "2",
        "api_key": "c9f89dd51e96edbf52cfe04dc9c278dc",
        "search_term": "example",
        "sort_term": "date_desc",
        "offset": "0",
        "limit": "10"
    }
    
    try:
        response = requests.get(api_url, params=params)
        response.raise_for_status()
        data = response.json()
        print("QR Codes Found:", data)
        return data
    except requests.exceptions.RequestException as error:
        print("Error searching QR codes:", error)
        raise

def get_qr_analytics(qr_id):
    api_url = "https://at-qr.com/api.php"
    params = {
        "action": "qrAnalytics",
        "user_id": "2",
        "api_key": "c9f89dd51e96edbf52cfe04dc9c278dc",
        "qr_id": qr_id
    }
    
    try:
        response = requests.get(api_url, params=params)
        response.raise_for_status()
        data = response.json()
        print("QR Analytics:", data)
        return data
    except requests.exceptions.RequestException as error:
        print("Error fetching QR analytics:", error)
        raise

# Example usage
if __name__ == "__main__":
    qr_data = generate_qr_code()
    search_results = search_qr_codes()
    if search_results.get('data'):
        analytics = get_qr_analytics(search_results['data'][0]['id'])

PHP Sample Connection Code

    
function generateQRCode() {
    $apiUrl = 'https://at-qr.com/api.php';
    $params = [
        'action' => 'getQR',
        'qr_option' => 'static',
        'user_id' => '2',
        'options' => 'url',
        'custom_color' => '#000000',
        'data' => 'https://example.com',
        'api_key' => 'c9f89dd51e96edbf52cfe04dc9c278dc',
        'textAbove' => 'Example QR',
        'scans_allowed' => 'unlimited'
    ];
    
    $url = $apiUrl . '?' . http_build_query($params);
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    
    if (curl_errno($ch)) {
        throw new Exception('cURL Error: ' . curl_error($ch));
    }
    
    curl_close($ch);
    
    $data = json_decode($response, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new Exception('JSON decode error: ' . json_last_error_msg());
    }
    
    echo "QR Code Generated: " . print_r($data, true);
    return $data;
}

function searchQRCodes() {
    $apiUrl = 'https://at-qr.com/api.php';
    $params = [
        'action' => 'searchQR',
        'user_id' => '2',
        'api_key' => 'c9f89dd51e96edbf52cfe04dc9c278dc',
        'search_term' => 'example',
        'sort_term' => 'date_desc',
        'offset' => '0',
        'limit' => '10'
    ];
    
    $url = $apiUrl . '?' . http_build_query($params);
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    
    if (curl_errno($ch)) {
        throw new Exception('cURL Error: ' . curl_error($ch));
    }
    
    curl_close($ch);
    
    $data = json_decode($response, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new Exception('JSON decode error: ' . json_last_error_msg());
    }
    
    echo "QR Codes Found: " . print_r($data, true);
    return $data;
}

function getQRAnalytics($qrId) {
    $apiUrl = 'https://at-qr.com/api.php';
    $params = [
        'action' => 'qrAnalytics',
        'user_id' => '2',
        'api_key' => 'c9f89dd51e96edbf52cfe04dc9c278dc',
        'qr_id' => $qrId
    ];
    
    $url = $apiUrl . '?' . http_build_query($params);
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    
    if (curl_errno($ch)) {
        throw new Exception('cURL Error: ' . curl_error($ch));
    }
    
    curl_close($ch);
    
    $data = json_decode($response, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new Exception('JSON decode error: ' . json_last_error_msg());
    }
    
    echo "QR Analytics: " . print_r($data, true);
    return $data;
}

// Example usage
try {
    $qrData = generateQRCode();
    $searchResults = searchQRCodes();
    if (!empty($searchResults['data'])) {
        $analytics = getQRAnalytics($searchResults['data'][0]['id']);
    }
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
    

Java Sample Connection Code

    
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;

public class QRCodeAPI {
    
    public static JSONObject generateQRCode() throws Exception {
        String apiUrl = "https://at-qr.com/api.php";
        String params = "action=getQR&qr_option=static&user_id=2&options=url" +
                       "&custom_color=%23000000&data=https://example.com" +
                       "&api_key=c9f89dd51e96edbf52cfe04dc9c278dc" +
                       "&textAbove=Example+QR&scans_allowed=unlimited";
        
        URL url = new URL(apiUrl + "?" + params);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        
        int responseCode = conn.getResponseCode();
        if (responseCode != 200) {
            throw new RuntimeException("HTTP error code: " + responseCode);
        }
        
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        
        JSONObject jsonResponse = new JSONObject(response.toString());
        System.out.println("QR Code Generated: " + jsonResponse.toString());
        return jsonResponse;
    }
    
    public static JSONObject searchQRCodes() throws Exception {
        String apiUrl = "https://at-qr.com/api.php";
        String params = "action=searchQR&user_id=2" +
                       "&api_key=c9f89dd51e96edbf52cfe04dc9c278dc" +
                       "&search_term=example&sort_term=date_desc" +
                       "&offset=0&limit=10";
        
        URL url = new URL(apiUrl + "?" + params);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        
        int responseCode = conn.getResponseCode();
        if (responseCode != 200) {
            throw new RuntimeException("HTTP error code: " + responseCode);
        }
        
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        
        JSONObject jsonResponse = new JSONObject(response.toString());
        System.out.println("QR Codes Found: " + jsonResponse.toString());
        return jsonResponse;
    }
    
    public static JSONObject getQRAnalytics(int qrId) throws Exception {
        String apiUrl = "https://at-qr.com/api.php";
        String params = "action=qrAnalytics&user_id=2" +
                       "&api_key=c9f89dd51e96edbf52cfe04dc9c278dc" +
                       "&qr_id=" + qrId;
        
       
        URL url = new URL(apiUrl + "?" + params);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        
        int responseCode = conn.getResponseCode();
        if (responseCode != 200) {
            throw new RuntimeException("HTTP error code: " + responseCode);
        }
        
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        
        JSONObject jsonResponse = new JSONObject(response.toString());
        System.out.println("QR Analytics: " + jsonResponse.toString());
        return jsonResponse;
    }
    
    public static void main(String[] args) {
        try {
            JSONObject qrData = generateQRCode();
            JSONObject searchResults = searchQRCodes();
            if (searchResults.has("data") && searchResults.getJSONArray("data").length() > 0) {
                int qrId = searchResults.getJSONArray("data").getJSONObject(0).getInt("id");
                JSONObject analytics = getQRAnalytics(qrId);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

C# Sample Connection Code

    
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static async Task GenerateQRCode()
    {
        string apiUrl = "https://at-qr.com/api.php";
        string queryParams = "?action=getQR&qr_option=static&user_id=2&options=url" +
                           "&custom_color=%23000000&data=https://example.com" +
                           "&api_key=c9f89dd51e96edbf52cfe04dc9c278dc" +
                           "&textAbove=Example QR&scans_allowed=unlimited";
        
        using (HttpClient client = new HttpClient())
        {
            try
            {
                HttpResponseMessage response = await client.GetAsync(apiUrl + queryParams);
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                dynamic data = JsonConvert.DeserializeObject(responseBody);
                Console.WriteLine("QR Code Generated: " + responseBody);
                return data;
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message: {0}", e.Message);
                throw;
            }
        }
    }
    
    static async Task SearchQRCodes()
    {
        string apiUrl = "https://at-qr.com/api.php";
        string queryParams = "?action=searchQR&user_id=2" +
                           "&api_key=c9f89dd51e96edbf52cfe04dc9c278dc" +
                           "&search_term=example&sort_term=date_desc" +
                           "&offset=0&limit=10";
        
        using (HttpClient client = new HttpClient())
        {
            try
            {
                HttpResponseMessage response = await client.GetAsync(apiUrl + queryParams);
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                dynamic data = JsonConvert.DeserializeObject(responseBody);
                Console.WriteLine("QR Codes Found: " + responseBody);
                return data;
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message: {0}", e.Message);
                throw;
            }
        }
    }
    
    static async Task GetQRAnalytics(int qrId)
    {
        string apiUrl = "https://at-qr.com/api.php";
        string queryParams = "?action=qrAnalytics&user_id=2" +
                           "&api_key=c9f89dd51e96edbf52cfe04dc9c278dc" +
                           "&qr_id=" + qrId;
        
        using (HttpClient client = new HttpClient())
        {
            try
            {
                HttpResponseMessage response = await client.GetAsync(apiUrl + queryParams);
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                dynamic data = JsonConvert.DeserializeObject(responseBody);
                Console.WriteLine("QR Analytics: " + responseBody);
                return data;
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message: {0}", e.Message);
                throw;
            }
        }
    }
    
    static async Task Main(string[] args)
    {
        try
        {
            dynamic qrData = await GenerateQRCode();
            dynamic searchResults = await SearchQRCodes();
            if (searchResults.data.Count > 0)
            {
                int qrId = searchResults.data[0].id;
                dynamic analytics = await GetQRAnalytics(qrId);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
    

Ruby Sample Connection Code

    
require 'net/http'
require 'uri'
require 'json'

def generate_qr_code
  api_url = 'https://at-qr.com/api.php'
  params = {
    'action' => 'getQR',
    'qr_option' => 'static',
    'user_id' => '2',
    'options' => 'url',
    'custom_color' => '#000000',
    'data' => 'https://example.com',
    'api_key' => 'c9f89dd51e96edbf52cfe04dc9c278dc',
    'textAbove' => 'Example QR',
    'scans_allowed' => 'unlimited'
  }
  
  uri = URI(api_url)
  uri.query = URI.encode_www_form(params)
  
  response = Net::HTTP.get_response(uri)
  
  if response.is_a?(Net::HTTPSuccess)
    data = JSON.parse(response.body)
    puts "QR Code Generated: #{data}"
    data
  else
    raise "HTTP Error: #{response.code} - #{response.message}"
  end
end

def search_qr_codes
  api_url = 'https://at-qr.com/api.php'
  params = {
    'action' => 'searchQR',
    'user_id' => '2',
    'api_key' => 'c9f89dd51e96edbf52cfe04dc9c278dc',
    'search_term' => 'example',
    'sort_term' => 'date_desc',
    'offset' => '0',
    'limit' => '10'
  }
  
  uri = URI(api_url)
  uri.query = URI.encode_www_form(params)
  
  response = Net::HTTP.get_response(uri)
  
  if response.is_a?(Net::HTTPSuccess)
    data = JSON.parse(response.body)
    puts "QR Codes Found: #{data}"
    data
  else
    raise "HTTP Error: #{response.code} - #{response.message}"
  end
end

def get_qr_analytics(qr_id)
  api_url = 'https://at-qr.com/api.php'
  params = {
    'action' => 'qrAnalytics',
    'user_id' => '2',
    'api_key' => 'c9f89dd51e96edbf52cfe04dc9c278dc',
    'qr_id' => qr_id
  }
  
  uri = URI(api_url)
  uri.query = URI.encode_www_form(params)
  
  response = Net::HTTP.get_response(uri)
  
  if response.is_a?(Net::HTTPSuccess)
    data = JSON.parse(response.body)
    puts "QR Analytics: #{data}"
    data
  else
    raise "HTTP Error: #{response.code} - #{response.message}"
  end
end

# Example usage
begin
  qr_data = generate_qr_code
  search_results = search_qr_codes
  if search_results['data'] && search_results['data'].any?
    analytics = get_qr_analytics(search_results['data'].first['id'])
  end
rescue => e
  puts "Error: #{e.message}"
end
    

Go Sample Connection Code

    
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
)

type QRResponse struct {
	Status  string      `json:"status"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

func generateQRCode() (QRResponse, error) {
	apiUrl := "https://at-qr.com/api.php"
	params := url.Values{}
	params.Add("action", "getQR")
	params.Add("qr_option", "static")
	params.Add("user_id", "2")
	params.Add("options", "url")
	params.Add("custom_color", "#000000")
	params.Add("data", "https://example.com")
	params.Add("api_key", "c9f89dd51e96edbf52cfe04dc9c278dc")
	params.Add("textAbove", "Example QR")
	params.Add("scans_allowed", "unlimited")

	resp, err := http.Get(apiUrl + "?" + params.Encode())
	if err != nil {
		return QRResponse{}, err
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return QRResponse{}, err
	}

	var result QRResponse
	err = json.Unmarshal(body, &result)
	if err != nil {
		return QRResponse{}, err
	}

	fmt.Printf("QR Code Generated: %+v\n", result)
	return result, nil
}

func searchQRCodes() (QRResponse, error) {
	apiUrl := "https://at-qr.com/api.php"
	params := url.Values{}
	params.Add("action", "searchQR")
	params.Add("user_id", "2")
	params.Add("api_key", "c9f89dd51e96edbf52cfe04dc9c278dc")
	params.Add("search_term", "example")
	params.Add("sort_term", "date_desc")
	params.Add("offset", "0")
	params.Add("limit", "10")

	resp, err := http.Get(apiUrl + "?" + params.Encode())
	if err != nil {
		return QRResponse{}, err
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return QRResponse{}, err
	}

	var result QRResponse
	err = json.Unmarshal(body, &result)
	if err != nil {
		return QRResponse{}, err
	}

	fmt.Printf("QR Codes Found: %+v\n", result)
	return result, nil
}

func getQRAnalytics(qrId string) (map[string]interface{}, error) {
	apiUrl := "https://at-qr.com/api.php"
	params := url.Values{}
	params.Add("action", "qrAnalytics")
	params.Add("user_id", "2")
	params.Add("api_key", "c9f89dd51e96edbf52cfe04dc9c278dc")
	params.Add("qr_id", qrId)

	resp, err := http.Get(apiUrl + "?" + params.Encode())
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}

	var result map[string]interface{}
	err = json.Unmarshal(body, &result)
	if err != nil {
		return nil, err
	}

	fmt.Printf("QR Analytics: %+v\n", result)
	return result, nil
}

func main() {
	qrData, err := generateQRCode()
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	searchResults, err := searchQRCodes()
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	if data, ok := searchResults.Data.([]interface{}); ok && len(data) > 0 {
		if firstItem, ok := data[0].(map[string]interface{}); ok {
			if qrId, ok := firstItem["id"].(float64); ok {
				analytics, err := getQRAnalytics(fmt.Sprintf("%.0f", qrId))
				if err != nil {
					fmt.Println("Error:", err)
					return
				}
				_ = analytics // Use analytics data
			}
		}
	}
}
            
        

Error Responses

Common error responses include:

Example Error Response

403 Forbidden
{
    "status": "error",
    "message": "Invalid API Key or User ID"
}

Rate Limiting

The API currently does not implement rate limiting, but excessive requests may be throttled.

Terms of Use

By using this API, you agree to use it responsibly and not for malicious purposes. The service provider reserves the right to revoke API access for any reason. You also agree to abide by all Terms and Conditions, Privacy Policies, and Disclaimer of AT-QR for all present and future circumstances.