Skip to content
Cloud service for image storage and delivery
PHP JavaScript CSS Dockerfile
Branch: master
Clone or download

Latest commit

talyguryn Rate limiting
* Upgrade styles config, remove unnesessary packages

* Add RateLimiter module

Use php 7.2 for a memcached driver

* UNdisable cache by default

* Close connection after sending a response

* Add comments

* Update

* Remove always_populate_raw_post_data for php7

* add echo before die

* Small fixes

* Fix codestyle
Latest commit b1f1245 Feb 26, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add docs Mar 22, 2018
capella Rate limiting Feb 26, 2020
docker Rate limiting Feb 26, 2020
docs Rate limiting Feb 26, 2020
.gitignore update gitignore Mar 22, 2018
LICENSE Cover tool (#130) Aug 21, 2018 Rate limiting Feb 26, 2020
docker-compose.yml Rate limiting Feb 26, 2020


Cloud service for image storage and delivery. Upload files and accept image-filters on the fly with the simple API.

Made with ❤️ by CodeX

⚠️ Warning is currently in beta. Uploading a large number of files is not supported.

At this time any client cannot upload more than 3 images per minute. This limit can be extened by access tokens. You can get it for your project later.



  1. Use site, SDK or API to upload an image.

  2. Add filters to uploaded image's URL and get processed image.

File requirements

Maximum size for the file is 15MB.

Capella supports these types of images:

  • jpg
  • jpeg
  • png
  • gif
  • bmp
  • tiff

Please note that each uploaded file will be converted to JPG with a white background and quality 90.

Capella SDKs

Upload API


You can upload image file or send link to the image from your app by making a request to

Method URI Data
POST upload file in file field
POST upload image url in link field

You will get a JSON response from server.


Each response will have at least success and message fields.

Field Type Description
success Boolean Request validness
message String Result message


Field Type Description or value
success Boolean true
message String Image uploaded
id String Image id
url String Full link to the uploaded image
mime String Mime type of the uploaded image
width Integer Image's width
height Integer Image's height
color String Average hex color of the image
size Integer Image's size in bytes
    "success": true,
    "message": "Image uploaded",
    "id": "69256e83-66e1-449a-b0c2-5414d332e3a6",
    "url": "https:\/\/\/69256e83-66e1-449a-b0c2-5414d332e3a6.jpg",
    "mime": "image\/jpg",
    "width": 1080,
    "height": 700,
    "color": "#9d908d",
    "size": "176769"


Field Type Description or value
success Boolean false
message String Reason why request was failed
    "success": false,
    "message": "Wrong source mime-type"

List of messages for failed requests

Code Message Description
400 File or link is missing No expected data was found
400 File is missing Filename is missing
400 Link is missing Field link is empty
400 Wrong source mime-type No support file with this mime-type
400 Source is too big File size exceeds the limit
400 Source is damaged Source has no data, size or mime-type
400 Can't get headers for this URL Wrong url was passed
405 Method not allowed Request method is not POST
429 Too Many Requests Client has exceed plan limit. Retry later



# Upload file

curl -X POST -F "file=@/path/to/image.png"
# Upload image by link

curl -X POST -d "link="


# Upload file

import requests
import json

files = {
    'file': open('./image.png','rb')

r ='', files=files)
response = json.loads(r.content)

# Upload image by link

import requests
import json

data = {
    'link': ''

r ='', data=data)
response = json.loads(r.content)


Getting image

You can get each uploaded image by the following URL scheme with or without extension.<image_id> or<image_id>.jpg


Apply filter by adding it at the end of the image URL.<image_id>/<filter>/<params>

You can use as many filters as you want.


Note that the order of filters affects the result:

Filter Result


Scale the image to the largest size such that both its width and its height can fit inside the target rectangle.

Param Type Description
width Integer Maximum images width or maximum target squares size if no height was given
height Integer (optional) Maximum image's height


Filter Result


Cover the target rectangle by the image. Nice tool for creating covers or profile pics.

Param Type Description
width Integer Target rectangles width or target squares size if no height was given
height Integer (optional) Target rectangle height


Filter Result
Additional params

If you need to crop an area from specified point then pass these params.

Note that this way width and height will be size params for the cropped area.

Param Type Description
x Integer Left indent
y Integer Top indent


Filter Result


Render image using large colored blocks.

Param Type Description
pixels Integer Number of pixels on the largest side


Filter Result


Place image to cover.

Param Type Description
color String Hex code of cover's color without hash symbol


Filter Result

Development and deployment

You can run your own Capella for usage or development. Follow our development and deployment guides.

Issues and improvements

Ask a question or report a bug on the create issue page.

Know how to improve Capella? Fork it and send pull request.

You can also drop a few lines to CodeX Team's email.

You can’t perform that action at this time.