PixHub
Exemple

Exemple

Exemplele de mai jos folosesc CHEIA_DVS_API ca substituent - înlocuiți-l cu cheia reală din Contul meu → Cheie API.

Încărcarea unui fișier

cURL

curl -X POST https://pixhub.ro/api/upload \
  -H "X-Api-Key: CHEIA_DVS_API" \
  -F "file=@/cale/catre/fotografie.jpg"

JavaScript (fetch)

const formData = new FormData();
formData.append('file', inputFisier.files[0]);

const raspuns = await fetch('https://pixhub.ro/api/upload', {
  method: 'POST',
  headers: { 'X-Api-Key': 'CHEIA_DVS_API' },
  body: formData,
});

const { upload } = await raspuns.json();
console.log(upload.url);        // URL-ul paginii
console.log(upload.direct_url); // URL direct la fișier

Python (requests)

import requests

with open('/cale/catre/fotografie.jpg', 'rb') as f:
    raspuns = requests.post(
        'https://pixhub.ro/api/upload',
        headers={'X-Api-Key': 'CHEIA_DVS_API'},
        files={'file': f},
    )

raspuns.raise_for_status()
upload = raspuns.json()['upload']
print(upload['url'])
print(upload['direct_url'])

Listarea fișierelor (cu paginare)

cURL

curl "https://pixhub.ro/api/uploads?page=2" \
  -H "X-Api-Key: CHEIA_DVS_API"

JavaScript

const raspuns = await fetch('https://pixhub.ro/api/uploads?page=1', {
  headers: { 'X-Api-Key': 'CHEIA_DVS_API' },
});
const date = await raspuns.json();
date.data.forEach(u => console.log(u.slug, u.url));

Ștergerea unui fișier

cURL

curl -X DELETE https://pixhub.ro/api/uploads/aB3kX9 \
  -H "X-Api-Key: CHEIA_DVS_API"

JavaScript

await fetch('https://pixhub.ro/api/uploads/aB3kX9', {
  method: 'DELETE',
  headers: { 'X-Api-Key': 'CHEIA_DVS_API' },
});

Gestionarea limitărilor de cereri

JavaScript cu reîncercare automată

async function cerereApi(url, optiuni = {}) {
  const raspuns = await fetch(url, {
    ...optiuni,
    headers: { 'X-Api-Key': 'CHEIA_DVS_API', ...optiuni.headers },
  });

  if (raspuns.status === 429) {
    const asteapta = parseInt(raspuns.headers.get('Retry-After') ?? '60', 10);
    await new Promise(r => setTimeout(r, asteapta * 1000));
    return cerereApi(url, optiuni); // reîncercare
  }

  if (!raspuns.ok) {
    const { error } = await raspuns.json();
    throw new Error(error);
  }

  return raspuns.json();
}

// Utilizare
const statistici = await cerereApi('https://pixhub.ro/api/stats');

Python cu reîncercare automată

import requests, time

def cerere_api(cale, cheie_api, reincercari=3):
    for incercare in range(reincercari):
        r = requests.get(
            f'https://pixhub.ro/api{cale}',
            headers={'X-Api-Key': cheie_api},
        )
        if r.status_code == 429:
            asteapta = int(r.headers.get('Retry-After', 60))
            time.sleep(asteapta)
            continue
        r.raise_for_status()
        return r.json()
    raise RuntimeError('Limita de cereri nu a fost rezolvată după reîncercări')

statistici = cerere_api('/stats', 'CHEIA_DVS_API')
print(statistici)