S.EE Docs
Developers

SM.MS Compatibility

Migrate from SM.MS to S.EE with minimal code changes

S.EE provides a SM.MS-compatible API layer, allowing you to migrate from SM.MS to S.EE with minimal code changes. Simply replace the API endpoint and you're ready to go.

Quick Migration

Replace the SM.MS API base URL with the S.EE equivalent:

SM.MSS.EE
https://sm.ms/api/v2https://s.ee/api/v1/file

Supported Endpoint

SM.MS EndpointS.EE EndpointDescription
POST /api/v2/uploadPOST /api/v1/file/uploadUpload image

Upload Image

Request

curl -X POST "https://s.ee/api/v1/file/upload" \
  -H "Authorization: your-api-key" \
  -F "smfile=@/path/to/image.png" \
  -F "domain=sm.ms" \
  -F "custom_slug=my-image"

Parameters

ParameterTypeRequiredDescription
smfilefileYesThe image file to upload (alias: file)
domainstringNoCustom domain for the short link
custom_slugstringNoCustom slug for the URL (random if not provided)

Response

{
  "code": 200,
  "message": "success",
  "data": {
    "file_id": 14184137,
    "width": 1024,
    "height": 1024,
    "filename": "my-cat.jpg",
    "storename": "my-cat.jpg",
    "size": 202814,
    "path": "/2026/02/11/dm3K/my-cat.jpg",
    "hash": "delete-hash-here",
    "url": "https://i.see.you/2026/02/11/dm3K/my-cat.jpg",
    "delete": "https://s.ee/api/v1/file/delete/delete-hash-here",
    "page": "https://sm.ms/my-cat",
    "upload_status": 2
  }

Code Examples

Python (requests)

import requests

# SM.MS original code
# url = "https://sm.ms/api/v2/upload"

# S.EE compatible endpoint
url = "https://s.ee/api/v1/file/upload"

headers = {
    "Authorization": "your-api-key"
}

files = {
    "smfile": open("image.png", "rb")
}

data = {
    "domain": "fs.to",  # optional
    "custom_slug": "my-image"  # optional
}

response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())

PHP (cURL)

<?php
// SM.MS original endpoint
// $url = "https://sm.ms/api/v2/upload";

// S.EE compatible endpoint
$url = "https://s.ee/api/v1/file/upload";

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: your-api-key"
    ],
    CURLOPT_POSTFIELDS => [
        "smfile" => new CURLFile("/path/to/image.png"),
        "domain" => "fs.to",  // optional
        "custom_slug" => "my-image"  // optional
    ]
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

JavaScript (fetch)

// SM.MS original endpoint
// const url = "https://sm.ms/api/v2/upload";

// S.EE compatible endpoint
const url = "https://s.ee/api/v1/file/upload";

const formData = new FormData();
formData.append("smfile", fileInput.files[0]);
formData.append("domain", "fs.to");  // optional
formData.append("custom_slug", "my-image");  // optional

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "your-api-key"
  },
  body: formData
});

const data = await response.json();
console.log(data);

Differences from SM.MS

While S.EE maintains compatibility with SM.MS API, there are some enhancements:

FeatureSM.MSS.EE
Custom domainNoYes
Custom slugNoYes
File size limit5MBVaries by plan
Supported formatsImages onlyImages, documents, and more

Get Your API Key

To use the S.EE API, you need an API key:

  1. Sign up or log in at s.ee
  2. Go to Tools > API Token
  3. Generate a new API key

Need Help?

If you encounter any issues during migration, please contact support or check our API documentation.

On this page