Skip to main content

Instagram official api 2.0 client by robosell.uz

Project description

Instagram API Client Library

A Python library for interacting with the official Instagram Graph API. This client provides easy-to-use methods for authentication, user management, conversations, and messaging functionality.

Official instagram documentation

Demo

You can visit robosell to test how instagram integration works and features have

Features

  • OAuth 2.0 Authentication
  • Long-lived token exchange
  • User profile management
  • Conversation handling
  • Message management
  • Built-in pagination support

Installation

pip install instagram-client

Prerequisites

Before using this library, you need to:

  1. Create an Instagram App in the Meta for Developers Console
  2. Obtain your Client ID and Client Secret
  3. Configure your OAuth redirect URI
  4. Set up the required scopes for your application

Quick Start

from instagram_client import InstagramClient


# Initialize the client
client = InstagramClient(
    client_id="your_client_id",
    client_secret="your_client_secret",
    redirect_uri="your_redirect_uri",
    scopes=["instagram_business_basic", "instagram_business_manage_messages"]
)
# For more detailed information visit https://developers.facebook.com/docs/instagram-platform/instagram-api-with-instagram-login

# Get the authorization URL
auth_url = client.get_auth_url()

# Also you can pass custom data to oauth url:
# auth_url = client.get_auth_url(state="user_{user_id}")

# Redirect user to auth_url for authorization

# After user authorization, exchange the code for an access token
login_response = client.retrieve_access_token(code="authorization_code")

# Exchange for a long-lived token
long_lived_token = client.exchange_long_lived_token() # long lived token expires in 60 days and short token expires in 30min

# Get authenticated user's profile
user_profile = client.get_me()

Detailed Usage

Authentication Flow

# Create new endpoint to redirect oauth url

# 1. Generate authentication URL
auth_url = client.get_auth_url(
    enable_fb_login=1,
    force_authentication=0,
    state="optional_state_parameter"
)

# 2. After user authorization, exchange the code for an access token
login_response = client.retrieve_access_token(code="authorization_code")
print(f"Access Token: {login_response.access_token}")

# 3. Exchange for a long-lived token
long_lived_token = client.exchange_long_lived_token()
print(f"Long-lived Token: {long_lived_token.access_token}")
print(f"Token Expires in: {long_lived_token.expires_in} seconds")

User Management

# Get authenticated user's profile
me = client.get_me()
print(f"Username: {me.username}")
print(f"Followers: {me.followers_count}")
print(f"Following: {me.follows_count}")

# Get another user's profile
user_profile = client.get_profile_info(user_id="target_user_id")
print(f"Name: {user_profile.name}")
print(f"Is Following Business: {user_profile.is_user_follow_business}")

Conversation Management

# Get all conversations
conversations = client.get_conversations(access_token="your_access_token")
for conversation in conversations:
    print(f"Conversation ID: {conversation.id}")
    print(f"Participants: {conversation.participants}")

# Get conversation with specific user
user_conversations = client.get_user_conversation(
    user_id="target_user_id",
    access_token="your_access_token"
)

# Get messages from a conversation
messages = client.get_conversation_messages(
    conversation_id="conversation_id",
    access_token="your_access_token",
    desired_limit=100  # Optional: limit number of messages
)

for message in messages:
    print(f"From: {message.from_}")
    print(f"Message: {message.message}")
    print(f"Time: {message.created_time}")

Sending Messages

from instagram_client.schemes.conversation_schemes import SendMessageScheme

# Create message payload
message = SendMessageScheme(
    message="Hello from Instagram API Client!",
    recipient_id="target_user_id"
)

# Send message
response = client.send_message(
    instagram_id="target_user_id",
    payload=message
)

Error Handling

The library includes built-in error handling for common API issues:

from instagram_client.exceptions.http_exceptions import ForbiddenException

try:
    token = client.retrieve_access_token(code="invalid_code")
except ForbiddenException as e:
    print(f"Authentication failed: {e}")

API Documentation

For detailed information about the Instagram Graph API endpoints and features, visit the official Instagram Graph API documentation.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Security

Please note that this library handles sensitive authentication tokens. Always follow security best practices:

  • Never commit tokens to version control
  • Store sensitive credentials in environment variables
  • Use secure methods to handle and store access tokens
  • Implement proper token refresh mechanisms

Support

If you encounter any issues or have questions, please file an issue on the GitHub repository.

Contacts:

Email - erkinovabdulvoris101@gmail.com

Telegram - @abdulvoris_101

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

instagram_client-0.1.1.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

instagram_client-0.1.1-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file instagram_client-0.1.1.tar.gz.

File metadata

  • Download URL: instagram_client-0.1.1.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for instagram_client-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b5125d434ef4f90615c41b377ba0d867b481e46ff17e6eb9d8d775dde077bff2
MD5 6abb14f8e57f5831920e16fbf5009df2
BLAKE2b-256 6af696c98e892a01a104082f674a36c5b2dc3c35d4b146b1d2f536b668c7abc4

See more details on using hashes here.

File details

Details for the file instagram_client-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for instagram_client-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 204cc86d50a2d6aa49782cc37cd0fe34c5653559b0fe525ba84747f1fd377fc6
MD5 26722c28f60274ece600987d2526f6a1
BLAKE2b-256 341f0a07f64064a51ba2a922f9b7afce20e7c397bb7b2d5ec87b39d23d6dcb76

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page