# amirsarhang/instagram-php-sdk architecture

> Architecture diagram of the GitHub repository amirsarhang/instagram-php-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/amirsarhang/instagram-php-sdk
- Repository: https://github.com/amirsarhang/instagram-php-sdk

## Overview

This PHP library lets an application authenticate with Instagram and make Graph API requests through a PSR-18 HTTP client. The main workflow is to configure the SDK, create an Instagram client, then use OAuth to obtain or refresh a token, or use a resource/raw request with an existing token. Account lookup, comments, messaging, and webhook subscription are distinct API capabilities. The transport builds and sends requests and translates responses into arrays or exceptions. Resource wiring and transport behavior are supported by sampled source; account implementation details are represented only at the documented capability level.

Main entry points: [`src/Instagram.php`](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Instagram.php) (Instagram facade), [`src/Http/GraphClient.php`](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Http/GraphClient.php) (Graph client), [`src/Resources/AbstractResource.php`](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/AbstractResource.php) (Resource base), [`src/Auth/OAuth.php`](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Auth/OAuth.php) (OAuth)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["SDK entry and config"]
  node_instagram["Instagram facade<br/>[Instagram.php]"]
  node_config["Config<br/>[Config.php]"]
  node_environment["Environment<br/>[Environment.php]"]
end

subgraph group_auth["Login and tokens"]
  node_oauth["OAuth<br/>[OAuth.php]"]
end

subgraph group_resources["Graph API resources"]
  node_account["Account<br/>[Account.php]"]
  node_comments["Comments<br/>[Comments.php]"]
  node_messages["Messages<br/>[Messages.php]"]
  node_webhooks["Webhooks<br/>[Webhooks.php]"]
  node_base_resource["Resource base"]
end

subgraph group_transport["Transport and errors"]
  node_graph_client["Graph client<br/>[GraphClient.php]"]
  node_graph_errors["Graph errors<br/>[GraphException.php]"]
  node_transport_errors["Transport errors"]
end

node_application(("Application"))
node_instagram_api{{"Instagram APIs"}}
node_http_client["PSR-18 client"]

node_application -->|"creates and uses"| node_instagram
node_instagram -->|"loads config"| node_config
node_config -->|"reads variables"| node_environment
node_instagram -->|"provides OAuth"| node_oauth
node_instagram -->|"provides account"| node_account
node_instagram -->|"provides comments"| node_comments
node_instagram -->|"provides messaging"| node_messages
node_instagram -->|"provides webhooks"| node_webhooks
node_instagram -->|"dispatches raw calls"| node_graph_client
node_instagram -->|"creates transport"| node_graph_client
node_oauth -->|"uses credentials"| node_config
node_oauth -->|"exchanges and queries"| node_graph_client
node_account -->|"inherits"| node_base_resource
node_comments -->|"inherits"| node_base_resource
node_messages -->|"inherits"| node_base_resource
node_webhooks -->|"inherits"| node_base_resource
node_base_resource -->|"dispatches requests"| node_graph_client
node_graph_client -->|"sends requests"| node_http_client
node_http_client -->|"HTTP exchange"| node_instagram_api
node_graph_client -->|"raises API errors"| node_graph_errors
node_graph_client -->|"raises transport errors"| node_transport_errors

click node_instagram "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Instagram.php"
click node_config "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Config.php"
click node_environment "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Environment.php"
click node_oauth "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Auth/OAuth.php"
click node_account "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Account.php"
click node_comments "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Comments.php"
click node_messages "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Messages.php"
click node_webhooks "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Webhooks.php"
click node_base_resource "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/AbstractResource.php"
click node_graph_client "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Http/GraphClient.php"
click node_graph_errors "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Exception/GraphException.php"
click node_transport_errors "https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Exception/TransportException.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_instagram,node_config,node_environment,node_http_client toneBlue
class node_oauth toneAmber
class node_account,node_comments,node_messages,node_webhooks,node_base_resource,node_instagram_api toneMint
class node_graph_client,node_graph_errors,node_transport_errors toneRose
class node_application toneIndigo
```

## Components

### SDK entry and config

- [Instagram facade](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Instagram.php): `src/Instagram.php`
- [Config](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Config.php): `src/Config.php`
- [Environment](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Environment.php): `src/Environment.php`

### Login and tokens

- [OAuth](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Auth/OAuth.php): `src/Auth/OAuth.php`

### Graph API resources

- [Account](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Account.php): `src/Resources/Account.php`
- [Comments](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Comments.php): `src/Resources/Comments.php`
- [Messages](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Messages.php): `src/Resources/Messages.php`
- [Webhooks](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/Webhooks.php): `src/Resources/Webhooks.php`
- [Resource base](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Resources/AbstractResource.php): `src/Resources/AbstractResource.php`

### Transport and errors

- [Graph client](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Http/GraphClient.php): `src/Http/GraphClient.php`
- [Graph errors](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Exception/GraphException.php): `src/Exception/GraphException.php`
- [Transport errors](https://github.com/amirsarhang/instagram-php-sdk/blob/main/src/Exception/TransportException.php): `src/Exception/TransportException.php`

### Other components

- **Application**
- **Instagram APIs**
- **PSR-18 client**

## Connections

- Application → Instagram facade: creates and uses
- Instagram facade → Config: loads config
- Config → Environment: reads variables
- Instagram facade → OAuth: provides OAuth
- Instagram facade → Account: provides account
- Instagram facade → Comments: provides comments
- Instagram facade → Messages: provides messaging
- Instagram facade → Webhooks: provides webhooks
- Instagram facade → Graph client: dispatches raw calls
- Instagram facade → Graph client: creates transport
- OAuth → Config: uses credentials
- OAuth → Graph client: exchanges and queries
- Account → Resource base: inherits
- Comments → Resource base: inherits
- Messages → Resource base: inherits
- Webhooks → Resource base: inherits
- Resource base → Graph client: dispatches requests
- Graph client → PSR-18 client: sends requests
- PSR-18 client → Instagram APIs: HTTP exchange
- Graph client → Graph errors: raises API errors
- Graph client → Transport errors: raises transport errors
