> ## Documentation Index
> Fetch the complete documentation index at: https://docs.inkyswap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Image

> Upload an image for token creation with security verification

<Warning>
  **API Access Required**: To use this endpoint, please contact [@emperoroftheink](https://t.me/emperoroftheink) on Telegram for access credentials and usage guidelines.
</Warning>

## Request Body

<ParamField body="file" type="file" required>
  Image file to upload (PNG, JPG, JPEG, GIF, WEBP). Maximum size: 5MB
</ParamField>

<ParamField body="turnstileToken" type="string" required>
  Cloudflare Turnstile verification token
</ParamField>

<ParamField body="walletAddress" type="string" required>
  Wallet address of the uploader for rate limiting
</ParamField>

## Response

<ResponseField name="url" type="string">
  Public URL of the uploaded image
</ResponseField>

## Rate Limits

* 5 uploads per minute per IP address
* 3 uploads per minute per wallet address
* Progressive rate limiting with stricter limits for repeated violations

## File Validation

* **Accepted formats**: PNG, JPG, JPEG, GIF, WEBP
* **Maximum file size**: 5MB
* **Content validation**: Files are validated to ensure they match their declared MIME type

<ResponseExample>
  ```json theme={null}
  {
    "url": "https://supabase.example.com/storage/v1/object/public/images/a3f5e2c891b4d7f6e8a9c1b3d5e7f9a1b3c5d7e9.png"
  }
  ```
</ResponseExample>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://inkypump.com/api/upload" \
    -H "Content-Type: multipart/form-data" \
    -F "file=@/path/to/image.png" \
    -F "turnstileToken=YOUR_TURNSTILE_TOKEN" \
    -F "walletAddress=0xYourWalletAddress"
  ```

  ```typescript TypeScript theme={null}
  const formData = new FormData();
  formData.append('file', fileInput.files[0]);
  formData.append('turnstileToken', turnstileToken);
  formData.append('walletAddress', walletAddress);

  const response = await fetch('https://inkypump.com/api/upload', {
    method: 'POST',
    body: formData
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  files = {'file': open('image.png', 'rb')}
  data = {
      'turnstileToken': 'YOUR_TURNSTILE_TOKEN',
      'walletAddress': '0xYourWalletAddress'
  }

  response = requests.post(
      'https://inkypump.com/api/upload',
      files=files,
      data=data
  )
  result = response.json()
  ```
</RequestExample>
