RESTful API Service for instagrapi
Allows you to use the Instagram Private API on any operating system from any programming language (C++, C#, F#, D, Golang, Erlang, Elixir, Nim, Haskell, Lisp, Closure, Julia, R, Java, Kotlin, Scala, OCaml, JavaScript, Crystal, Ruby, Rust, Swift, Objective-C, Visual Basic, .NET, Pascal, Perl, Lua, PHP and others) to automate the work of your accounts.
- Authorization: Login, support 2FA and manage settings
- Media: info, delete, edit, like, archive and much more else
- Video: download, upload to feed and story
- Photo: download, upload to feed and story
- IGTV: download, upload to feed and story
- Clip (Reels): download, upload to feed and story
- Album: download, upload to feed and story
- Story: info, delete, seen, download and much more else
- User: followers/following, info, follow/unfollow, remove_follower and much more else
- Insights: media, account
Install ImageMagick library:
sudo apt install imagemagick
...and comment the line with strict security policies of ImageMagick in /etc/ImageMagick-6/policy.xml
:
<!--<policy domain="path" rights="none" pattern="@*"/>-->
Run docker container:
docker run adw0rd/instagrapi-rest
Or clone the repository:
git clone https://github.com/adw0rd/instagrapi-rest.git
cd instagrapi-rest
Build your image and run the container:
docker build -t instagrapi-rest .
docker run -p 8000:8000 instagrapi-rest
Or you can use docker-compose:
docker-compose up -d
Or manual installation and launch:
python3 -m venv .venv
. .venv/bin/activate
pip install -U wheel pip -Ur requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
Open in browser http://localhost:8000/docs and follow the instructions
Get sessionid:
curl -X 'GET' \
'http://localhost:8000/auth/login' \
-H 'accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=<USERNAME>&password=<PASSWORD>&verification_code=<2FA CODE>'
Upload photo:
curl -X 'POST' \
'http://localhost:8000/photo/upload_to_story' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'sessionid=<SESSIONID>' \
-F 'file=@photo.jpeg;type=image/jpeg'
Upload photo by URL:
curl -X 'POST' \
'https://localhost:8000/photo/upload_to_story/by_url' \
-H 'accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'sessionid=<SESSIONID>&url=https%3A%2F%2Fapi.telegram.org%2Ffile%2Ftest.jpg'
Upload video:
curl -X 'POST' \
'http://localhost:8000/video/upload_to_story' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'sessionid=<SESSIONID>' \
-F 'file=@video.mp4;type=video/mp4'
Upload video by URL:
curl -X 'POST' \
'https://localhost:8000/video/upload_to_story/by_url' \
-H 'accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'sessionid=<SESSIONID>&url=https%3A%2F%2Fapi.telegram.org%2Ffile%2Ftest.MP4'
Tests can be run like this:
docker-compose run api pytest tests.py
One test:
docker-compose run api pytest tests.py::test_media_pk_from_code
or without docker-compose:
docker run --rm -v "$(pwd):/app" instagrapi-rest pytest tests.py
For debugging:
docker-compose run --service-ports api