API Reference

REST API publik untuk mengakses 36 snippet di 14 kategori. Read-only, gratis, tanpa API key.

Endpoints

4

Snippets Exposed

36

Auth

Tidak perlu

Format

JSON

Live Request Activity

Volume 5 menit · distribusi 24 jam

live
Req / menit

Total request

Avg latency

Uptime

Request volume — 5 menit terakhir

Distribusi endpoint

Belum ada request hari ini.

Status response

Belum ada request hari ini.

Quickstart

Semua endpoint diakses lewat base URL berikut. Tidak ada autentikasi atau API key — langsung request dan dapatkan JSON.

Base URL

https://qrtzcode.web.id/api/v1
curl
curl "https://qrtzcode.web.id/api/v1/snippets?limit=5"

Endpoints

GET/api/v1/snippets

List semua snippet

Mengambil daftar snippet dengan pagination dan filter opsional. Hasil di-sort dari yang terbaru.

Query ParamTipeKeterangan
categorystringFilter berdasarkan slug kategori, contoh: scraper
tagstringFilter snippet yang memiliki tag tertentu
languagestringFilter berdasarkan bahasa, contoh: typescript
limitnumberJumlah hasil per halaman, default 20, maksimal 100
offsetnumberOffset untuk pagination, default 0

Request

curl
curl "https://qrtzcode.web.id/api/v1/snippets?limit=5"

Response 200

application/json
{
  "data": [
    {
      "id": "049cad18-7ea7-4eff-99e3-40398a55e4a4",
      "slug": "otakudesu",
      "title": "otakudesu",
      "description": "seperti biasa bebas kalian modifikasi ubah credit ama creatornya, ak gabakal baper kok😹, semoga bermanfaat ya^^.",
      "language": "javascript",
      "tags": [
        "anime",
        "scraper"
      ],
      "copy_count": 37,
      "view_count": 66,
      "created_at": "2026-06-18T19:03:45.350504+00:00",
      "categories": {
        "name": "Anime",
        "slug": "anime"
      }
    }
  ],
  "meta": {
    "total": 36,
    "limit": 20,
    "offset": 0
  }
}

Coba langsung

GET/api/v1/snippets/:id

Detail satu snippet

Mengambil detail snippet beserta metadata file-file-nya (filename, language, position). Source code tidak disertakan — gunakan endpoint /raw untuk mengambil isi file langsung.

Path ParamTipeKeterangan
idwajibstring (uuid)ID unik snippet, didapat dari endpoint list

Request

curl
curl "https://qrtzcode.web.id/api/v1/snippets/049cad18-7ea7-4eff-99e3-40398a55e4a4"

Response 200

application/json
{
  "id": "049cad18-7ea7-4eff-99e3-40398a55e4a4",
  "slug": "otakudesu",
  "title": "otakudesu",
  "description": "seperti biasa bebas kalian modifikasi ubah credit ama creatornya, ak gabakal baper kok😹, semoga bermanfaat ya^^.",
  "language": "javascript",
  "tags": [
    "anime",
    "scraper"
  ],
  "copy_count": 37,
  "view_count": 66,
  "created_at": "2026-06-18T19:03:45.350504+00:00",
  "categories": {
    "name": "Anime",
    "slug": "anime"
  },
  "files": [
    {
      "filename": "otakudesu.js",
      "language": "javascript",
      "position": 0
    }
  ]
}

Coba langsung

GET/api/v1/snippets/:id/raw

Ambil source code mentah

Mengembalikan isi file snippet sebagai plain text apa adanya, bukan dibungkus JSON. Cocok buat curl url -o file.js langsung tanpa parsing.

Path ParamTipeKeterangan
idwajibstring (uuid)ID unik snippet, didapat dari endpoint list
Query ParamTipeKeterangan
filestringNama file spesifik kalau snippet punya lebih dari satu file. Default: file pertama

Request

curl
curl "https://qrtzcode.web.id/api/v1/snippets/049cad18-7ea7-4eff-99e3-40398a55e4a4/raw" -o otakudesu.js

Response 200

text/plain
const axios = require('axios');
const cheerio = require('cheerio');
const https = require('https');

const userAgents = [
  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
  'Mozilla/5.0 (Windows NT 10.0; Win64; x...

Coba langsung

GET/api/feed

RSS / JSON Feed

Feed snippet terbaru dalam format RSS 2.0 atau JSON Feed, cocok untuk syndication dan feed reader.

Query ParamTipeKeterangan
formatstring"rss" (default) atau "json"

Request

curl
curl "https://qrtzcode.web.id/api/feed?format=json"

Response 200

application/json
{
  "data": [
    {
      "id": "049cad18-7ea7-4eff-99e3-40398a55e4a4",
      "slug": "otakudesu",
      "title": "otakudesu",
      "description": "seperti biasa bebas kalian modifikasi ubah credit ama creatornya, ak gabakal baper kok😹, semoga bermanfaat ya^^.",
      "language": "javascript",
      "tags": [
        "anime",
        "scraper"
      ],
      "copy_count": 37,
      "view_count": 66,
      "created_at": "2026-06-18T19:03:45.350504+00:00",
      "categories": {
        "name": "Anime",
        "slug": "anime"
      }
    }
  ],
  "meta": {
    "total": 36,
    "limit": 20,
    "offset": 0
  }
}

Coba langsung

Premium AM

Alight Motion Premium 1 tahun via 2-step flow

Authorization: Bearer required

Cara kerja — 2 step

  1. 1POST /api/v1/premium/send dengan body { "email": "target@gmail.com" }. Server forward ke Alight Motion → mereka kirim email berisi tombol "Login ke Alight Creative".
  2. 2Buka inbox target (cek folder Spam juga). JANGAN klik tombol di HP — kalau diklik verifikasi gagal. Tekan-tahan tombolnya → pilih Salin URL.
  3. 3POST /api/v1/premium/verif dengan body { email, link } — link adalah URL yang barusan disalin.
  4. 4Server balikin duration: "1 Tahun" kalau sukses. Login Alight Motion di HP pakai email tadi — Premium sudah aktif.
POST/api/v1/premium/send

Kirim link verifikasi

Body JSON: { "email": "target@gmail.com" }. Server proxy ke upstream & bikin signed request — kamu cuma kasih email-nya.

Body (JSON)TipeKeterangan
emailwajibstringEmail target Alight Motion. Format x@y.z.

Request

curl
curl -X POST "https://qrtzcode.web.id/api/v1/premium/send" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {API_RYNA}" \
  -d '{ "email": "target@gmail.com" }'

Response 200

application/json
{
  "status": true,
  "email": "target@gmail.com",
  "message": "Link verifikasi terkirim ke inbox email.",
  "instructions": [
    "Buka inbox email (cek folder Spam juga).",
    "Cari email dari Alight Motion / Alight Creative.",
    "Tekan-tahan tombol login, pilih Salin URL.",
    "Jangan klik langsung — copy link doang.",
    "POST /api/v1/premium/verif dengan body { email, link }."
  ]
}

Coba langsung

POST/api/v1/premium/verif

Verifikasi link & aktifkan Premium

Body JSON: { email, link }. Link adalah URL yang disalin dari email verifikasi — tekan-tahan tombol → Salin URL, jangan diklik langsung.

Body (JSON)TipeKeterangan
emailwajibstringEmail yang sama dengan yang dikirim di /send.
linkwajibstringURL disalin dari email. Harus prefix http:// atau https://.

Request

curl
curl -X POST "https://qrtzcode.web.id/api/v1/premium/verif" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {API_RYNA}" \
  -d '{
    "email": "target@gmail.com",
    "link": "https://alightcreative.com/auth/..."
  }'

Response 200

application/json
{
  "status": true,
  "email": "target@gmail.com",
  "premium": true,
  "duration": "1 Tahun",
  "raw_duration": "1_year",
  "message": "Akun Alight Motion sudah Premium. Login langsung di aplikasi."
}

Coba langsung

KodeErrorKeterangan
400invalid_requestEmail kosong / format salah, atau link bukan URL valid.
401authentication_errorAPI key salah atau tidak ada di header Authorization: Bearer.
502upstream_errorServer Alight Motion error atau link kadaluwarsa. Coba ulang send/verif.

Error Codes

200Request berhasil
404Resource tidak ditemukan (id salah / sudah dihapus)
500Internal error di server, coba lagi

Contoh error 404

application/json
{
  "error": "Not found"
}

Caching & CORS

Semua response endpoint /api/v1/* dikirim dengan header Cache-Control: s-maxage=60, stale-while-revalidate — di-cache 60 detik di edge Vercel, lalu di-revalidate otomatis di background.

CORS terbuka penuh (Access-Control-Allow-Origin: *), jadi bisa langsung di-fetch dari browser di domain manapun tanpa proxy.

Rate Limit

Maksimal 50 req/menit per IP. Melebihi limit → 429 Too Many Requests dengan header Retry-After: 60.

IP yang melewati 150 req/menit terdeteksi sebagai DDoS dan langsung di-ban permanen → 403 Forbidden. Gunakan client-side cache (lihat bagian Integrasi) untuk menghindari hit limit.

Integrasi & Client Cache

localStorage TTL 60s — zero dependency

Tidak ada SDK resmi — cukup pakai fetch biasa. Helper di bawah menambahkan layer cache localStorage sehingga endpoint yang sama tidak di-hit berulang dalam 60 detik.

Vanilla JS

javascript
const BASE = 'https://qrtzcode.web.id';
const TTL  = 60_000; // 60 detik

async function qrtzFetch(path) {
  const key = 'qrtz:' + path;
  try {
    const { data, exp } = JSON.parse(localStorage.getItem(key) ?? '{}');
    if (data && Date.now() < exp) return data;
  } catch {}
  const data = await fetch(BASE + path).then(r => r.json());
  localStorage.setItem(key, JSON.stringify({ data, exp: Date.now() + TTL }));
  return data;
}

const list   = await qrtzFetch('/api/v1/snippets?limit=10');
const detail = await qrtzFetch('/api/v1/snippets/' + id);

React / Next.js hook

typescript
import { useEffect, useState } from 'react';

const BASE = 'https://qrtzcode.web.id';
const TTL  = 60_000;

export function useQrtz<T = unknown>(path: string) {
  const [data, setData]       = useState<T | null>(null);
  const [loading, setLoading] = useState(true);
  const [error, setError]     = useState<Error | null>(null);

  useEffect(() => {
    setLoading(true);
    const key = 'qrtz:' + path;
    try {
      const { data: cached, exp } = JSON.parse(localStorage.getItem(key) ?? '{}');
      if (cached && Date.now() < exp) { setData(cached); setLoading(false); return; }
    } catch {}
    fetch(BASE + path)
      .then(r => r.json())
      .then(json => {
        localStorage.setItem(key, JSON.stringify({ data: json, exp: Date.now() + TTL }));
        setData(json);
      })
      .catch(setError)
      .finally(() => setLoading(false));
  }, [path]);

  return { data, loading, error };
}

const { data, loading } = useQrtz('/api/v1/snippets?limit=10');
Versionv1
Base URLhttps://qrtzcode.web.id/api/v1
FormatJSON
AuthNone
CORSOpen *
Rate limit50/min
Edge cache60s
Changelog →