Skip to content

User API

Retrieve information about your account, including storage usage and subscription details.

Endpoint

http
GET /user/

Authentication

Required.

Response

json
{
  "name": "John Doe",
  "bucket_id": "abc123",
  "avatar": "https://example.com/avatar.jpg",
  "image_count": 150,
  "storage_used": 524288,
  "storage_limit": 10485760,
  "video_storage_used": 45.5,
  "video_storage_limit": 120,
  "transform_count": 3542,
  "subscription_tier": 1
}

Response Fields

FieldTypeDescription
nameStringAccount holder's name
bucket_idStringYour unique bucket/directory identifier
avatarStringURL to profile avatar
image_countIntegerTotal number of images uploaded
storage_usedNumberStorage used in kilobytes
storage_limitNumberStorage limit in kilobytes based on tier
video_storage_usedNumberVideo storage used in minutes
video_storage_limitNumberVideo storage limit in minutes
transform_countIntegerTotal number of transformations generated
subscription_tierIntegerSubscription level (0=Free, 1=Pro, 2=Enterprise)

Code Examples

javascript
async function getUserInfo() {
  const response = await fetch('https://api.reimage.dev/user/', {
    headers: {
      'Authorization': `Bearer ${process.env.REIMAGE_API_KEY}`
    }
  });

  if (!response.ok) {
    throw new Error(`Failed to get user info: ${response.status}`);
  }

  return await response.json();
}

// Usage
const user = await getUserInfo();
console.log(`Name: ${user.name}`);
console.log(`Storage: ${user.storage_used} / ${user.storage_limit} KB`);
console.log(`Images: ${user.image_count}`);

// Calculate storage percentage
const storagePercent = (user.storage_used / user.storage_limit * 100).toFixed(2);
console.log(`Storage usage: ${storagePercent}%`);
python
import requests
import os

def get_user_info():
    """Retrieve user account information"""
    headers = {
        'Authorization': f'Bearer {os.environ.get("REIMAGE_API_KEY")}'
    }

    response = requests.get(
        'https://api.reimage.dev/user/',
        headers=headers
    )
    response.raise_for_status()

    return response.json()

# Usage
user = get_user_info()
print(f"Name: {user['name']}")
print(f"Storage: {user['storage_used']} / {user['storage_limit']} KB")
print(f"Images: {user['image_count']}")

# Calculate storage percentage
storage_percent = (user['storage_used'] / user['storage_limit']) * 100
print(f"Storage usage: {storage_percent:.2f}%")
php
<?php
function getUserInfo() {
    $apiKey = getenv('REIMAGE_API_KEY');
    $url = 'https://api.reimage.dev/user/';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $apiKey
    ]);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode !== 200) {
        throw new Exception("Failed to get user info: $httpCode");
    }

    return json_decode($response, true);
}

// Usage
$user = getUserInfo();
echo "Name: " . $user['name'] . "\n";
echo "Storage: " . $user['storage_used'] . " / " . $user['storage_limit'] . " KB\n";
echo "Images: " . $user['image_count'] . "\n";

// Calculate storage percentage
$storagePercent = ($user['storage_used'] / $user['storage_limit']) * 100;
echo "Storage usage: " . number_format($storagePercent, 2) . "%\n";
?>
go
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
)

type UserInfo struct {
    Name               string  `json:"name"`
    BucketID           string  `json:"bucket_id"`
    Avatar             string  `json:"avatar"`
    ImageCount         int     `json:"image_count"`
    StorageUsed        float64 `json:"storage_used"`
    StorageLimit       float64 `json:"storage_limit"`
    VideoStorageUsed   float64 `json:"video_storage_used"`
    VideoStorageLimit  float64 `json:"video_storage_limit"`
    TransformCount     int     `json:"transform_count"`
    SubscriptionTier   int     `json:"subscription_tier"`
}

func getUserInfo(apiKey string) (*UserInfo, error) {
    req, err := http.NewRequest("GET", "https://api.reimage.dev/user/", nil)
    if err != nil {
        return nil, err
    }

    req.Header.Set("Authorization", "Bearer "+apiKey)

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    if resp.StatusCode != 200 {
        return nil, fmt.Errorf("failed with status: %d", resp.StatusCode)
    }

    var user UserInfo
    if err := json.NewDecoder(resp.Body).Decode(&user); err != nil {
        return nil, err
    }

    return &user, nil
}

func main() {
    apiKey := os.Getenv("REIMAGE_API_KEY")
    user, err := getUserInfo(apiKey)

    if err != nil {
        fmt.Printf("Error: %v\n", err)
        return
    }

    fmt.Printf("Name: %s\n", user.Name)
    fmt.Printf("Storage: %.2f / %.2f KB\n", user.StorageUsed, user.StorageLimit)
    fmt.Printf("Images: %d\n", user.ImageCount)

    storagePercent := (user.StorageUsed / user.StorageLimit) * 100
    fmt.Printf("Storage usage: %.2f%%\n", storagePercent)
}
rust
use reqwest::header::{HeaderMap, HeaderValue, AUTHORIZATION};
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize)]
struct UserInfo {
    name: String,
    bucket_id: String,
    avatar: String,
    image_count: u32,
    storage_used: f64,
    storage_limit: f64,
    video_storage_used: f64,
    video_storage_limit: f64,
    transform_count: u32,
    subscription_tier: u8,
}

async fn get_user_info(api_key: &str) -> Result<UserInfo, Box<dyn std::error::Error>> {
    let mut headers = HeaderMap::new();
    headers.insert(
        AUTHORIZATION,
        HeaderValue::from_str(&format!("Bearer {}", api_key))?,
    );

    let client = reqwest::Client::new();
    let response = client
        .get("https://api.reimage.dev/user/")
        .headers(headers)
        .send()
        .await?;

    if !response.status().is_success() {
        return Err(format!("Failed: {}", response.status()).into());
    }

    let user = response.json::<UserInfo>().await?;
    Ok(user)
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key = std::env::var("REIMAGE_API_KEY")?;
    let user = get_user_info(&api_key).await?;

    println!("Name: {}", user.name);
    println!("Storage: {:.2} / {:.2} KB", user.storage_used, user.storage_limit);
    println!("Images: {}", user.image_count);

    let storage_percent = (user.storage_used / user.storage_limit) * 100.0;
    println!("Storage usage: {:.2}%", storage_percent);

    Ok(())
}

React Dashboard Example

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

function UserDashboard() {
  const [user, setUser] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch('https://api.reimage.dev/user/', {
      headers: {
        'Authorization': `Bearer ${process.env.REACT_APP_REIMAGE_API_KEY}`
      }
    })
      .then(res => res.json())
      .then(data => {
        setUser(data);
        setLoading(false);
      });
  }, []);

  if (loading) return <div>Loading...</div>;

  const storagePercent = (user.storage_used / user.storage_limit * 100).toFixed(1);
  const videoPercent = (user.video_storage_used / user.video_storage_limit * 100).toFixed(1);

  return (
    <div>
      <h1>Welcome, {user.name}!</h1>

      <div className="stats">
        <div className="stat">
          <h3>Images</h3>
          <p>{user.image_count.toLocaleString()}</p>
        </div>

        <div className="stat">
          <h3>Transformations</h3>
          <p>{user.transform_count.toLocaleString()}</p>
        </div>

        <div className="stat">
          <h3>Image Storage</h3>
          <progress value={storagePercent} max="100" />
          <p>{storagePercent}% used</p>
          <small>
            {(user.storage_used / 1024).toFixed(2)} MB /
            {(user.storage_limit / 1024).toFixed(2)} MB
          </small>
        </div>

        <div className="stat">
          <h3>Video Storage</h3>
          <progress value={videoPercent} max="100" />
          <p>{videoPercent}% used</p>
          <small>
            {user.video_storage_used} min / {user.video_storage_limit} min
          </small>
        </div>
      </div>

      <p>Bucket ID: <code>{user.bucket_id}</code></p>
      <p>Subscription: {['Free', 'Pro', 'Enterprise'][user.subscription_tier]}</p>
    </div>
  );
}

Subscription Tiers

TierValueStorage LimitVideo Limit
Free0100 MB0 minutes
Pro110 GB120 minutes
Enterprise2CustomCustom

Use Cases

Check Storage Before Upload

javascript
const user = await getUserInfo();
const fileSizeKB = file.size / 1024;

if (user.storage_used + fileSizeKB > user.storage_limit) {
  alert('Storage limit exceeded! Please upgrade your plan.');
  return;
}

// Proceed with upload
await uploadImage(file);

Display Storage Warning

javascript
const user = await getUserInfo();
const storagePercent = (user.storage_used / user.storage_limit) * 100;

if (storagePercent > 90) {
  showWarning('You are running low on storage!');
}

Next Steps

Released under the MIT License.