API compatible avec GIPHY

Passez de GIPHY à Heypster sans réécrire votre intégration

L’API Heypster reprend les primitives REST les plus utilisées de GIPHY : même logique d’endpoints, même enveloppe de réponse et même organisation des déclinaisons. Sur `heypster-gif.com`, cette couche est exposée sous le préfixe `/giphy`.

Dans la plupart des cas, la migration revient à remplacer `https://api.giphy.com` par `https://heypster-gif.com/giphy`, à changer la clé API, puis à conserver vos parseurs `data`, `pagination`, `meta` et `images`.

/v1

Chemins alignés sur GIPHY

JSON

Schéma prévu pour limiter les régressions

Fetch

Migration rapide côté front et back

Principe de migration

const GIPHY_URL = 'https://api.giphy.com';
const HEYPSTER_URL = 'https://heypster-gif.com/giphy';

// même chemin, nouvel hôte
fetch(`${HEYPSTER_URL}/v1/gifs/search?api_key=YOUR_HEYPSTER_API_KEY&q=celebration`);

Guide de prise en main

Les exemples ci-dessous ciblent directement la couche compatible GIPHY exposée sur `https://heypster-gif.com/giphy`. Les routes sont protégées par le middleware `giphy.apikey` ; si votre implémentation reproduit GIPHY, continuez à transmettre `api_key`.

Raccourci utile : si votre code utilise déjà une variable du type `GIPHY_API_BASE_URL`, remplacez-la par `https://heypster-gif.com/giphy` et conservez ensuite les mêmes suffixes `/v1/...`.
Authentification : pour une migration sans refonte, gardez `api_key`. Les clients Heypster natifs peuvent aussi utiliser l’en-tête `HEYPSTER-API-KEY`.

1. Tester une recherche

curl "https://heypster-gif.com/giphy/v1/gifs/search?api_key=YOUR_HEYPSTER_API_KEY&q=party&limit=12&lang=fr"

2. Faire la même chose en JavaScript

const HEYPSTER_API_HOST = 'https://heypster-gif.com/giphy';
const HEYPSTER_API_KEY = 'YOUR_HEYPSTER_API_KEY';

async function searchGifs(query) {
    const response = await fetch(
        `${HEYPSTER_API_HOST}/v1/gifs/search?api_key=${HEYPSTER_API_KEY}&q=${encodeURIComponent(query)}&limit=12&lang=fr`
    );

    const payload = await response.json();
    return payload.data;
}

3. Réutiliser les mêmes déclinaisons que GIPHY

const gif = payload.data[0];

const originalUrl = gif.images.original.url;
const originalMp4 = gif.images.original.mp4;
const originalWebp = gif.images.original.webp;
const fixedWidthUrl = gif.images.fixed_width.url;
const previewGif = gif.images.preview_gif.url;

4. Tester les autres endpoints disponibles

# Catégories
curl "https://heypster-gif.com/giphy/v1/gifs/categories?api_key=YOUR_HEYPSTER_API_KEY"

# Recherches tendances
curl "https://heypster-gif.com/giphy/v1/trending/searches?api_key=YOUR_HEYPSTER_API_KEY"

# Random ID
curl "https://heypster-gif.com/giphy/v1/randomid?api_key=YOUR_HEYPSTER_API_KEY"

# Variations d’emoji
curl "https://heypster-gif.com/giphy/v2/emoji/1/variations?api_key=YOUR_HEYPSTER_API_KEY"

Endpoints GIF

La structure ci-dessous reprend la logique de lecture des docs GIPHY : chaque endpoint conserve un chemin REST familier et un contrat pensé pour limiter le refactoring.

Endpoint de recherche

Recherche principale pour mots-clés, réactions et requêtes éditoriales. C’est l’endpoint le plus proche des intégrations GIPHY existantes.

/giphy/v1/gifs/search
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
q happy birthday Texte recherché.
limit 25 Nombre maximum de résultats.
offset 0 Pagination numérique compatible GIPHY.
lang fr Langue utilisateur facultative.

Endpoint tendances

Retourne les GIF les plus pertinents du moment. Idéal pour les pages d’accueil, les pickers et les suggestions initiales.

/giphy/v1/gifs/trending
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
limit 20 Nombre maximum de résultats.
offset 0 Pagination des tendances.

Endpoint translate

Retourne un GIF unique correspondant à une intention. Pratique pour transformer rapidement une action en réaction animée.

/giphy/v1/gifs/translate
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
s / q thumbs up Intention ou courte expression. `s` est le paramètre principal ; `q` est accepté en repli.

Endpoint aléatoire

Renvoie un GIF aléatoire, éventuellement filtré par tag. Utile pour les expériences légères ou les emplacements éditoriaux.

/giphy/v1/gifs/random
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
tag celebration Tag facultatif.

Récupérer un GIF par ID

À utiliser pour recharger des GIF déjà sélectionnés, restaurer un historique ou résoudre des IDs enregistrés.

/giphy/v1/gifs/{id} and /giphy/v1/gifs?ids=...
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
id xT9IgDEI1iZyb2wqo8 Identifiant unique.
ids abc,def,ghi Liste d’identifiants séparés par des virgules.

Autocomplete, catégories et tags liés

Complète les requêtes utilisateur, retourne les catégories et fournit des tags liés pour enrichir les parcours de découverte.

/giphy/v1/gifs/search/tags /giphy/v1/gifs/categories /giphy/v1/tags/related/{term}
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
q par Préfixe de recherche pour l’autocomplete.
term party Terme utilisé pour `/tags/related/{term}`.
limit 5 Nombre maximum de suggestions.
offset 0 Décalage numérique pour les listes compatibles GIPHY.

Recherches tendances et Random ID

Expose les requêtes tendances et un identifiant aléatoire pour les parcours compatibles avec les usages courants de GIPHY.

/giphy/v1/trending/searches /giphy/v1/randomid
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
limit / offset 25 / 0 Disponibles pour `/trending/searches`.
none - Aucun paramètre supplémentaire pour `/randomid`.

API Emoji

Retourne la collection d’emoji et les variations par identifiant pour les intégrations qui utilisent les endpoints emoji de GIPHY. Les objets suivent une forme proche des stickers GIPHY, `url` pointe directement vers l’asset image, et `/v2/emoji/{emoji_id}/variations` renvoie `data: []` lorsqu’aucune variante n’existe.

/giphy/v1/emoji /giphy/v2/emoji /giphy/v2/emoji/{emoji_id}/variations
Paramètre Exemple Description
api_key YOUR_HEYPSTER_API_KEY Clé API Heypster.
q smile Filtre de recherche pour les collections emoji.
limit / offset 25 / 0 Disponibles sur `/v1/emoji` et `/v2/emoji`.
emoji_id 1 Identifiant pour `/v2/emoji/{emoji_id}/variations`.

Schéma de réponse

Pour une migration fluide, gardez votre logique de parsing centrée sur ces quatre blocs.

À noter : les endpoints de collection paginés renvoient `data`, `pagination` et `meta`. Les endpoints unitaires et certains endpoints utilitaires renvoient seulement `data` et `meta`.

data

Tableau d’objets GIF ou objet unique selon l’endpoint.

pagination

Bloc de pagination avec `total_count`, `count` et `offset`, présent sur les endpoints de collection paginés.

meta

Informations de statut, message et identifiant de réponse.

images

Déclinaisons compatibles GIPHY prêtes à consommer. Les URLs image sont dérivées de `gif_mini`, les URLs vidéo de `h264`, avec `webp` et `mp4`, sans `webm`.

{
  "data": [
    {
      "id": "abc123",
      "title": "celebration",
      "url": "https://your-heypster-app/gifs/abc123",
      "slug": "celebration-abc123",
      "rating": "g",
      "images": {
        "original": {
          "url": "https://cdn.heypster.example/original-mini.gif",
          "width": "",
          "height": "",
          "mp4": "https://cdn.heypster.example/original.mp4",
          "webp": "https://cdn.heypster.example/original-mini.gif"
        },
        "fixed_width": {
          "url": "https://cdn.heypster.example/fixed_width.gif",
          "width": "",
          "height": "",
          "mp4": "https://cdn.heypster.example/fixed_width.mp4",
          "webp": "https://cdn.heypster.example/fixed_width.gif"
        },
        "preview_gif": {
          "url": "https://cdn.heypster.example/preview.gif"
        },
        "preview": {
          "mp4": "https://cdn.heypster.example/preview.mp4"
        }
      }
    }
  ],
  "pagination": {
    "total_count": 500,
    "count": 25,
    "offset": 0
  },
  "meta": {
    "status": 200,
    "msg": "OK",
    "response_id": "heypster-response-id"
  }
}

Bonnes pratiques

  • Conservez le même parser GIPHY tant que votre application lit surtout `data`, `pagination`, `meta` et `images`.
  • Gardez en tête que `pagination` n’est pas présente sur tous les endpoints : les réponses unitaires et certains endpoints utilitaires renvoient seulement `data` et `meta`.
  • Ne consommez que les déclinaisons nécessaires pour limiter la bande passante côté web et mobile.
  • Sur Heypster, les déclinaisons image sont reconstruites à partir de `gif_mini` et les déclinaisons vidéo à partir de `h264`.
  • Ne dépendez pas de `webm` : le contrat actuel expose `webp` et `mp4`.
  • Gardez `limit` et `offset` côté client pour préserver un comportement identique pendant la migration.
  • Mettez en cache les suggestions et les tendances côté serveur si votre trafic ou vos quotas l’exigent.