Referensi API

AgentGIF menyediakan REST API gratis dengan 30+ endpoint. Endpoint baca tidak memerlukan autentikasi. Endpoint tulis (unggah, edit, hapus) memerlukan API key.

URL Dasar

https://agentgif.com/api/v1/

Semua endpoint relatif terhadap URL dasar ini. HTTPS diperlukan — permintaan HTTP akan dialihkan.

Autentikasi

Endpoint baca (GET) terbuka dan gratis — tidak perlu autentikasi. Endpoint tulis (POST, PATCH, DELETE) memerlukan API key yang diteruskan melalui header X-API-Key:

curl -H "X-API-Key: YOUR_API_KEY" https://agentgif.com/api/v1/gifs/upload/ \
  -F "[email protected]" -F "title=Demo"

Get your API key at Settings → API Key. You can reset it at any time via the settings page or the /api/v1/users/me/api-key/reset/ endpoint.

Format Respons

Semua respons berformat application/json. Tanggal menggunakan format ISO 8601. ID GIF adalah string nanoid 8 karakter (mis., xK9mQ2pL).

Objek GIF tipikal terlihat seperti:

{
  "id": "xK9mQ2pL",
  "title": "Git Interactive Rebase",
  "slug": "git-rebase",
  "command": "git rebase -i HEAD~3",
  "shell": "zsh",
  "description": "Interactive rebase to squash commits",
  "gif_url": "https://media.agentgif.com/xK9mQ2pL.gif",
  "mp4_url": "https://media.agentgif.com/xK9mQ2pL.mp4",
  "cast_url": "https://media.agentgif.com/xK9mQ2pL.cast",
  "thumbnail_url": "https://media.agentgif.com/xK9mQ2pL_thumb.png",
  "width": 1000,
  "height": 580,
  "frames": 142,
  "duration_ms": 8500,
  "file_size_bytes": 245760,
  "visibility": "public",
  "view_count": 1234,
  "tags": ["git", "rebase", "version-control"],
  "user": {"username": "agentgif"},
  "tool": {"name": "git", "slug": "git"},
  "theme": {"name": "Catppuccin Mocha", "slug": "catppuccin-mocha"},
  "created_at": "2026-03-15T10:30:00Z",
  "detail_url": "https://agentgif.com/@agentgif/git-rebase/",
  "embed_codes": {
    "markdown": "[![Git Rebase](https://media.agentgif.com/xK9mQ2pL.gif)](https://agentgif.com/xK9mQ2pL)",
    "html": "<a href=\"https://agentgif.com/xK9mQ2pL\"><img src=\"...\" /></a>"
  }
}

Paginasi

Endpoint daftar mengembalikan hasil dengan paginasi. Gunakan parameter query page dan page_size:

GET /api/v1/gifs/?page=2&page_size=20

Respons mencakup metadata paginasi:

{
  "count": 886,
  "next": "https://agentgif.com/api/v1/gifs/?page=3",
  "previous": "https://agentgif.com/api/v1/gifs/?page=1",
  "results": [...]
}

Ukuran halaman default adalah 20. Maksimum adalah 100.

Batas Rate

TingkatanBatasCakupan
Anonim60 permintaan/menitPer IP
Terautentikasi300 permintaan/menitPer API key
Unggah10 unggahan/jamPer API key

Header batas rate disertakan dalam setiap respons: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GIF

Daftar GIF

GET /api/v1/gifs/

Mengembalikan semua GIF publik yang belum dihapus, diurutkan berdasarkan tanggal pembuatan (terbaru lebih dulu).

Parameter query: page, page_size, tag, shell, user.

curl -s https://agentgif.com/api/v1/gifs/?tag=docker&page_size=5 | jq '.count'

Detail GIF

GET /api/v1/gifs/{id}/

Metadata lengkap untuk satu GIF termasuk kode embed, URL unduhan, dan dimensi file.

curl -s https://agentgif.com/api/v1/gifs/xK9mQ2pL/ | jq '.title, .gif_url'

Data Cast

GET /api/v1/gifs/{id}/cast/

Returns the raw asciinema v2 cast file — a JSON header line followed by newline-delimited event tuples [timestamp, event_type, data]. This is the machine-readable layer that AI agents use to understand the terminal session.

Transkrip

GET /api/v1/gifs/{id}/transcript/

Transkrip teks biasa dari sesi terminal — perintah dan outputnya, dengan kode escape ANSI dihapus. Berguna untuk pencarian teks lengkap dan konteks LLM.

GIF Unggulan

GET /api/v1/featured/

Pilihan GIF berkualitas tinggi yang dikurasi secara manual oleh tim AgentGIF.

Unggah (Memerlukan Autentikasi)

POST /api/v1/gifs/upload/

Unggah GIF dengan metadata. Menerima multipart/form-data.

BidangTipeWajibDeskripsi
fileFileYaFile GIF (maks 10 MB)
titleStringYaJudul GIF
commandStringTidakPerintah yang didemonstrasikan
descriptionStringTidakTeks deskripsi
tagsStringTidakTag yang dipisahkan koma
shellStringTidakShell yang digunakan (bash, zsh, fish, dll.)
castFileTidakFile cast asciinema v2
visibilityStringTidakpublic (default) atau unlisted
curl -X POST https://agentgif.com/api/v1/gifs/upload/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "[email protected]" \
  -F "title=Docker Compose Up" \
  -F "command=docker compose up -d" \
  -F "tags=docker,compose,containers" \
  -F "[email protected]"

Perbarui GIF (Memerlukan Autentikasi)

PATCH /api/v1/gifs/{id}/edit/

Perbarui judul, deskripsi, tag, atau visibilitas. Hanya pemilik GIF yang dapat mengedit.

Hapus GIF (Memerlukan Autentikasi)

DELETE /api/v1/gifs/{id}/delete/

Menghapus GIF secara lunak. Dapat dipulihkan dalam 30 hari.

GET /api/v1/search/?q={query}

Pencarian teks lengkap di judul GIF, deskripsi, perintah, tag, dan transkrip. Minimal 2 karakter.

ParameterDeskripsi
qQuery pencarian (wajib, min 2 karakter)
tagFilter berdasarkan slug tag
shellFilter berdasarkan shell (bash, zsh, fish, dll.)
userFilter berdasarkan nama pengguna
sortUrutan sortir: relevance (default), recent, views
curl -s "https://agentgif.com/api/v1/search/?q=git+rebase&sort=views" | jq '.results[0].title'

Tag

Daftar Tag

GET /api/v1/tags/

Semua tag dengan jumlah GIF, diurutkan berdasarkan popularitas.

GIF berdasarkan Tag

GET /api/v1/tags/{slug}/gifs/

Daftar GIF dengan paginasi untuk tag tertentu.

curl -s https://agentgif.com/api/v1/tags/docker/gifs/ | jq '.count'

Koleksi

Daftar Koleksi

GET /api/v1/collections/

Koleksi Unggulan

GET /api/v1/collections/featured/

Detail Koleksi

GET /api/v1/collections/{slug}/

Mengembalikan metadata koleksi dan daftar GIF yang diurutkan.

Buat Koleksi (Memerlukan Autentikasi)

POST /api/v1/collections/create/

Kelola GIF Koleksi (Memerlukan Autentikasi)

MetodeEndpointDeskripsi
POST/api/v1/collections/{slug}/gifs/Tambah GIF ke koleksi
POST/api/v1/collections/{slug}/gifs/reorder/Urutkan Ulang GIF
DELETE/api/v1/collections/{slug}/gifs/{gif_id}/Hapus GIF

Pengguna

Profil Pengguna

GET /api/v1/users/{username}/

GIF Pengguna

GET /api/v1/users/{username}/gifs/

Pengguna Terautentikasi

GET /api/v1/users/me/

Mengembalikan profil Anda, termasuk API key dan statistik unggahan. Memerlukan autentikasi.

Atur Ulang API Key

POST /api/v1/users/me/api-key/reset/

Menghasilkan API key baru. Kunci lama segera dinonaktifkan.

Tema

Daftar Tema

GET /api/v1/themes/

Semua 15 tema terminal dengan palet warnanya (foreground, background, warna ANSI).

Detail Tema

GET /api/v1/themes/{slug}/

Palet warna lengkap untuk tema tertentu. Gunakan ini untuk merender file cast dengan warna yang benar.

Layanan Badge

Terminal-themed package badges — a developer-friendly alternative to shields.io. See the Badge Playground for a visual builder.

EndpointDeskripsi
/badge/pypi/{package}/version.svgBadge versi PyPI
/badge/npm/{package}/version.svgBadge versi npm
/badge/crates/{package}/version.svgBadge versi crates.io
/badge/github/{owner}/{repo}/stars.svgBadge bintang GitHub

Kustomisasi dengan parameter query: ?theme=dracula, ?style=flat.

<img src="https://agentgif.com/badge/pypi/requests/version.svg?theme=catppuccin-mocha" />

Generator Tape AI

Buat skrip tape VHS dari deskripsi bahasa alami menggunakan AI.

Buat Job Pembuatan

POST /api/v1/gifs/generate/

Memulai job pembuatan async. Mengembalikan job_id untuk memeriksa status.

Periksa Status Pembuatan

GET /api/v1/gifs/generate/{job_id}/

Mengembalikan status pembuatan (pending, processing, completed, failed) dan skrip tape yang dihasilkan saat selesai.

Kode Error

StatusArti
200Berhasil
201Dibuat (unggah, buat koleksi)
400Permintaan buruk — parameter tidak ada atau tidak valid
401Tidak terotorisasi — API key tidak ada atau tidak valid
403Dilarang — Anda bukan pemilik sumber daya ini
404Tidak ditemukan — ID GIF atau slug tidak ada
429Batas rate terlampaui — perlambat
500Server error — report it

Respons error menyertakan bidang detail dengan pesan yang dapat dibaca manusia:

{
  "detail": "Authentication credentials were not provided."
}

Spesifikasi OpenAPI

Spesifikasi OpenAPI 3.1 lengkap tersedia di:

https://agentgif.com/api/openapi.json

Import it into Swagger UI, Insomnia, or any OpenAPI-compatible tool.