F2U API Documentation

This documentation provides details on how to interact with the F2U (File to URL) API programmatically.

Endpoints

POST /api/users

Register a new user.

Request Body

{
  "name": "User Name", // Required
  "email": "user@example.com" // Optional
}

Response

{
  "user": {
    "id": "unique-user-id",
    "name": "User Name",
    "email": "user@example.com",
    "created_at": 1617235678901
  }
}

POST /api/files

Upload one or more files. Use multipart/form-data encoding.

Form Parameters

Parameter Description Required
userId The user ID Yes
file The file to upload Yes
file-1, file-2, ... Additional files to upload No
expiry Expiry time in hours (omit for permanent file) No

Response

{
  "files": [
    {
      "id": "unique-file-id",
      "user_id": "user-id",
      "filename": "example.jpg",
      "content_type": "image/jpeg",
      "size": 123456,
      "expiry": 1617235678901, // null if permanent
      "created_at": 1617235678901,
      "url": "https://example.com/f/unique-file-id"
    },
    ...
  ]
}

GET /api/files?userId=user-id

List all files for a user.

Query Parameters

Parameter Description Required
userId The user ID Yes

Response

{
  "files": [
    {
      "id": "unique-file-id",
      "user_id": "user-id",
      "filename": "example.jpg",
      "content_type": "image/jpeg",
      "size": 123456,
      "expiry": 1617235678901, // null if permanent
      "created_at": 1617235678901,
      "url": "https://example.com/f/unique-file-id"
    },
    ...
  ]
}

DELETE /api/files/file-id?userId=user-id

Delete a file.

Path Parameters

Parameter Description Required
file-id The ID of the file to delete Yes

Query Parameters

Parameter Description Required
userId The user ID Yes

Response

{
  "success": true
}

GET /api/users/stats?userId=user-id

Get statistics for a user.

Query Parameters

Parameter Description Required
userId The user ID Yes

Response

{
  "stats": {
    "user_id": "user-id",
    "total_files": 10,
    "total_size": 1234567,
    "last_upload": 1617235678901,
    "user": {
      "id": "user-id",
      "name": "User Name",
      "email": "user@example.com",
      "created_at": 1617235678901
    },
    "current_files": 5
  }
}

GET /api/users/download-id?userId=user-id

Download user ID as a text file.

Query Parameters

Parameter Description Required
userId The user ID Yes

Response

A downloadable text file containing the user ID and registration information.

GET /f/file-id

Serve a file directly by its ID.

Path Parameters

Parameter Description Required
file-id The ID of the file to serve Yes

Response

The file content with appropriate content type headers.

Example Usage (Python)

import requests

# Register a user
response = requests.post("https://p2fu.objs.app/api/users", json={
    "name": "Test User",
    "email": "test@example.com"
})
user_data = response.json()
user_id = user_data["user"]["id"]

# Upload a file
files = {"file": open("example.jpg", "rb")}
data = {"userId": user_id, "expiry": "24"}  # Expire in 24 hours
response = requests.post("https://p2fu.objs.app/api/files", data=data, files=files)
file_data = response.json()
file_url = file_data["files"][0]["url"]

# List files
response = requests.get(f"https://p2fu.objs.app/api/files?userId={user_id}")
files_list = response.json()["files"]

# Get user stats
response = requests.get(f"https://p2fu.objs.app/api/users/stats?userId={user_id}")
user_stats = response.json()["stats"]

# Download user ID
response = requests.get(f"https://p2fu.objs.app/api/users/download-id?userId={user_id}")
with open("user-id.txt", "wb") as f:
    f.write(response.content)

# Delete a file
file_id = files_list[0]["id"]
response = requests.delete(f"https://p2fu.objs.app/api/files/{file_id}?userId={user_id}")