Skip to content

Activity operations

Examples assume an initialized synchronous or asynchronous client named ig.

ig.operations.activity.list()

List account activity with the v3 query controls.

Official IG reference: https://labs.ig.com/reference/history-activity.html

Signatures

  • Sync: (query: 'ActivityQuery | None' = None) -> 'ActivityResponse'
  • Async: (query: 'ActivityQuery | None' = None) -> 'ActivityResponse'

Parameters

Name Type Required/default Constraints Description
query ActivityQuery | None None - Optional typed query controls; None uses provider defaults.
query.from_date date | datetime | str | None default: None - Inclusive beginning of the requested time range.
query.to_date date | datetime | str | None default: None - Inclusive end of the requested time range.
query.detailed bool | None default: None - Whether IG should include detailed activity records.
query.deal_id str | None default: None - IG identifier of an existing position or working order.
query.filter str | None default: None - Provider filter controlling the records or market detail returned.
query.page_size int | None default: None >= 10; <= 500 Maximum records requested per provider page.

Sync example

from ig_trading_lib.operations.accounts import ActivityQuery

result = ig.operations.activity.list(query=ActivityQuery(page_size=50))

Async example

from ig_trading_lib.operations.accounts import ActivityQuery

result = await ig.operations.activity.list(query=ActivityQuery(page_size=50))

Response shape: ActivityResponse

Field Type Required/default
activities[] tuple[Activity, ...] default: ()
activities[].action_status str | None default: None
activities[].activity str | None default: None
activities[].activity_history_id str | None default: None
activities[].channel str | None default: None
activities[].currency str | None default: None
activities[].date str | None default: None
activities[].deal_id str | None default: None
activities[].description str | None default: None
activities[].details ActivityDetails | None default: None
activities[].details.actions[] tuple[ActivityAction, ...] default: ()
activities[].details.actions[].action_type str | None default: None
activities[].details.actions[].affected_deal_id str | None default: None
activities[].details.actions[].currency str | None default: None
activities[].details.actions[].deal_reference str | None default: None
activities[].details.actions[].direction Literal['BUY', 'SELL'] | None default: None
activities[].details.actions[].good_till_date str | None default: None
activities[].details.actions[].guaranteed_stop bool | None default: None
activities[].details.actions[].level Decimal | None default: None
activities[].details.actions[].limit_distance Decimal | None default: None
activities[].details.actions[].limit_level Decimal | None default: None
activities[].details.actions[].market_name str | None default: None
activities[].details.actions[].size Decimal | None default: None
activities[].details.actions[].stop_distance Decimal | None default: None
activities[].details.actions[].stop_level Decimal | None default: None
activities[].details.actions[].trailing_step Decimal | None default: None
activities[].details.actions[].trailing_stop_distance Decimal | None default: None
activities[].details.epic str | None default: None
activities[].details.period str | None default: None
activities[].details.status str | None default: None
activities[].details.type str | None default: None
activities[].epic str | None default: None
activities[].level Decimal | str | None default: None
activities[].limit Decimal | str | None default: None
activities[].market_name str | None default: None
activities[].period str | None default: None
activities[].result str | None default: None
activities[].size Decimal | str | None default: None
activities[].stop Decimal | str | None default: None
activities[].stop_type str | None default: None
activities[].time str | None default: None
metadata CursorMetadata | None default: None
metadata.paging CursorPaging required
metadata.paging.next str | None default: None
metadata.paging.size int | None default: None

Response example

{
  "activities": [
    {
      "action_status": "example",
      "activity": "example",
      "activity_history_id": "example",
      "channel": "example",
      "currency": "GBP",
      "date": "example",
      "deal_id": "DIAAAABBBCCC",
      "description": "example",
      "details": {
        "actions": [
          {
            "action_type": "example",
            "affected_deal_id": "example",
            "currency": "GBP",
            "deal_reference": "ABC123",
            "direction": "BUY",
            "good_till_date": "example",
            "guaranteed_stop": true,
            "level": "1.0",
            "limit_distance": "1.0",
            "limit_level": "1.0",
            "market_name": "example",
            "size": "1.0",
            "stop_distance": "1.0",
            "stop_level": "1.0",
            "trailing_step": "1.0",
            "trailing_stop_distance": "1.0"
          }
        ],
        "epic": "CS.D.EURUSD.CFD.IP",
        "period": "example",
        "status": "ENABLED",
        "type": "example"
      },
      "epic": "CS.D.EURUSD.CFD.IP",
      "level": "1.0",
      "limit": "1.0",
      "market_name": "example",
      "period": "example",
      "result": "example",
      "size": "1.0",
      "stop": "1.0",
      "stop_type": "example",
      "time": "example"
    }
  ],
  "metadata": {
    "paging": {
      "next": "example",
      "size": 1
    }
  }
}

Limitations

  • Returned resources and fields depend on the active account, environment, entitlements, and current IG catalogue.
  • IG can change account-specific allowances and availability independently of this library.
  • IG restricts activity history to provider-defined date and page windows.

Exceptions

Exception Trigger Recovery
AuthenticationError IG rejected the credentials, required session values were absent, or refresh failed. Re-authenticate with valid credentials before retrying.
AuthorizationError The active account cannot access the requested resource or action. Switch to an entitled account or request the required IG permission.
RateLimitError IG rejected the request because an allowance was exhausted. Wait for retry_after_seconds when present, then retry with bounded backoff.
ProviderRejectionError IG rejected an otherwise well-formed request. Inspect error_code and correct the provider-specific input or account state.
ResourceNotFoundError The requested provider resource does not exist or is inaccessible. Verify the identifier and active account before retrying.
TransportError A network or timeout failure prevented a completed read request. Retry the idempotent read with bounded backoff.
ValidationError Request construction failed or an IG response did not match the declared model. Correct invalid request fields; report provider response drift with redacted diagnostics.

ig.operations.activity.list_by_date_range()

List account activity between two dates using the v2 endpoint.

Official IG reference: https://labs.ig.com/reference/history-activity-dates.html

Signatures

  • Sync: (from_date: 'date | datetime | str', to_date: 'date | datetime | str') -> 'ActivityResponse'
  • Async: (from_date: 'date | datetime | str', to_date: 'date | datetime | str') -> 'ActivityResponse'

Parameters

Name Type Required/default Constraints Description
from_date date | datetime | str required - Inclusive beginning of the requested time range.
to_date date | datetime | str required - Inclusive end of the requested time range.

Sync example

result = ig.operations.activity.list_by_date_range(from_date="2026-08-01", to_date="2026-08-08")

Async example

result = await ig.operations.activity.list_by_date_range(from_date="2026-08-01", to_date="2026-08-08")

Response shape: ActivityResponse

Field Type Required/default
activities[] tuple[Activity, ...] default: ()
activities[].action_status str | None default: None
activities[].activity str | None default: None
activities[].activity_history_id str | None default: None
activities[].channel str | None default: None
activities[].currency str | None default: None
activities[].date str | None default: None
activities[].deal_id str | None default: None
activities[].description str | None default: None
activities[].details ActivityDetails | None default: None
activities[].details.actions[] tuple[ActivityAction, ...] default: ()
activities[].details.actions[].action_type str | None default: None
activities[].details.actions[].affected_deal_id str | None default: None
activities[].details.actions[].currency str | None default: None
activities[].details.actions[].deal_reference str | None default: None
activities[].details.actions[].direction Literal['BUY', 'SELL'] | None default: None
activities[].details.actions[].good_till_date str | None default: None
activities[].details.actions[].guaranteed_stop bool | None default: None
activities[].details.actions[].level Decimal | None default: None
activities[].details.actions[].limit_distance Decimal | None default: None
activities[].details.actions[].limit_level Decimal | None default: None
activities[].details.actions[].market_name str | None default: None
activities[].details.actions[].size Decimal | None default: None
activities[].details.actions[].stop_distance Decimal | None default: None
activities[].details.actions[].stop_level Decimal | None default: None
activities[].details.actions[].trailing_step Decimal | None default: None
activities[].details.actions[].trailing_stop_distance Decimal | None default: None
activities[].details.epic str | None default: None
activities[].details.period str | None default: None
activities[].details.status str | None default: None
activities[].details.type str | None default: None
activities[].epic str | None default: None
activities[].level Decimal | str | None default: None
activities[].limit Decimal | str | None default: None
activities[].market_name str | None default: None
activities[].period str | None default: None
activities[].result str | None default: None
activities[].size Decimal | str | None default: None
activities[].stop Decimal | str | None default: None
activities[].stop_type str | None default: None
activities[].time str | None default: None
metadata CursorMetadata | None default: None
metadata.paging CursorPaging required
metadata.paging.next str | None default: None
metadata.paging.size int | None default: None

Response example

{
  "activities": [
    {
      "action_status": "example",
      "activity": "example",
      "activity_history_id": "example",
      "channel": "example",
      "currency": "GBP",
      "date": "example",
      "deal_id": "DIAAAABBBCCC",
      "description": "example",
      "details": {
        "actions": [
          {
            "action_type": "example",
            "affected_deal_id": "example",
            "currency": "GBP",
            "deal_reference": "ABC123",
            "direction": "BUY",
            "good_till_date": "example",
            "guaranteed_stop": true,
            "level": "1.0",
            "limit_distance": "1.0",
            "limit_level": "1.0",
            "market_name": "example",
            "size": "1.0",
            "stop_distance": "1.0",
            "stop_level": "1.0",
            "trailing_step": "1.0",
            "trailing_stop_distance": "1.0"
          }
        ],
        "epic": "CS.D.EURUSD.CFD.IP",
        "period": "example",
        "status": "ENABLED",
        "type": "example"
      },
      "epic": "CS.D.EURUSD.CFD.IP",
      "level": "1.0",
      "limit": "1.0",
      "market_name": "example",
      "period": "example",
      "result": "example",
      "size": "1.0",
      "stop": "1.0",
      "stop_type": "example",
      "time": "example"
    }
  ],
  "metadata": {
    "paging": {
      "next": "example",
      "size": 1
    }
  }
}

Limitations

  • Returned resources and fields depend on the active account, environment, entitlements, and current IG catalogue.
  • IG can change account-specific allowances and availability independently of this library.
  • Date strings must use a format accepted by IG.

Exceptions

Exception Trigger Recovery
AuthenticationError IG rejected the credentials, required session values were absent, or refresh failed. Re-authenticate with valid credentials before retrying.
AuthorizationError The active account cannot access the requested resource or action. Switch to an entitled account or request the required IG permission.
RateLimitError IG rejected the request because an allowance was exhausted. Wait for retry_after_seconds when present, then retry with bounded backoff.
ProviderRejectionError IG rejected an otherwise well-formed request. Inspect error_code and correct the provider-specific input or account state.
ResourceNotFoundError The requested provider resource does not exist or is inaccessible. Verify the identifier and active account before retrying.
TransportError A network or timeout failure prevented a completed read request. Retry the idempotent read with bounded backoff.
ValidationError Request construction failed or an IG response did not match the declared model. Correct invalid request fields; report provider response drift with redacted diagnostics.

ig.operations.activity.list_by_period()

List recent account activity for a provider period.

Official IG reference: https://labs.ig.com/reference/history-activity-period.html

Signatures

  • Sync: (period: 'str') -> 'ActivityResponse'
  • Async: (period: 'str') -> 'ActivityResponse'

Parameters

Name Type Required/default Constraints Description
period str required - ISO-8601-style provider period such as P7D.

Sync example

result = ig.operations.activity.list_by_period(period="P7D")

Async example

result = await ig.operations.activity.list_by_period(period="P7D")

Response shape: ActivityResponse

Field Type Required/default
activities[] tuple[Activity, ...] default: ()
activities[].action_status str | None default: None
activities[].activity str | None default: None
activities[].activity_history_id str | None default: None
activities[].channel str | None default: None
activities[].currency str | None default: None
activities[].date str | None default: None
activities[].deal_id str | None default: None
activities[].description str | None default: None
activities[].details ActivityDetails | None default: None
activities[].details.actions[] tuple[ActivityAction, ...] default: ()
activities[].details.actions[].action_type str | None default: None
activities[].details.actions[].affected_deal_id str | None default: None
activities[].details.actions[].currency str | None default: None
activities[].details.actions[].deal_reference str | None default: None
activities[].details.actions[].direction Literal['BUY', 'SELL'] | None default: None
activities[].details.actions[].good_till_date str | None default: None
activities[].details.actions[].guaranteed_stop bool | None default: None
activities[].details.actions[].level Decimal | None default: None
activities[].details.actions[].limit_distance Decimal | None default: None
activities[].details.actions[].limit_level Decimal | None default: None
activities[].details.actions[].market_name str | None default: None
activities[].details.actions[].size Decimal | None default: None
activities[].details.actions[].stop_distance Decimal | None default: None
activities[].details.actions[].stop_level Decimal | None default: None
activities[].details.actions[].trailing_step Decimal | None default: None
activities[].details.actions[].trailing_stop_distance Decimal | None default: None
activities[].details.epic str | None default: None
activities[].details.period str | None default: None
activities[].details.status str | None default: None
activities[].details.type str | None default: None
activities[].epic str | None default: None
activities[].level Decimal | str | None default: None
activities[].limit Decimal | str | None default: None
activities[].market_name str | None default: None
activities[].period str | None default: None
activities[].result str | None default: None
activities[].size Decimal | str | None default: None
activities[].stop Decimal | str | None default: None
activities[].stop_type str | None default: None
activities[].time str | None default: None
metadata CursorMetadata | None default: None
metadata.paging CursorPaging required
metadata.paging.next str | None default: None
metadata.paging.size int | None default: None

Response example

{
  "activities": [
    {
      "action_status": "example",
      "activity": "example",
      "activity_history_id": "example",
      "channel": "example",
      "currency": "GBP",
      "date": "example",
      "deal_id": "DIAAAABBBCCC",
      "description": "example",
      "details": {
        "actions": [
          {
            "action_type": "example",
            "affected_deal_id": "example",
            "currency": "GBP",
            "deal_reference": "ABC123",
            "direction": "BUY",
            "good_till_date": "example",
            "guaranteed_stop": true,
            "level": "1.0",
            "limit_distance": "1.0",
            "limit_level": "1.0",
            "market_name": "example",
            "size": "1.0",
            "stop_distance": "1.0",
            "stop_level": "1.0",
            "trailing_step": "1.0",
            "trailing_stop_distance": "1.0"
          }
        ],
        "epic": "CS.D.EURUSD.CFD.IP",
        "period": "example",
        "status": "ENABLED",
        "type": "example"
      },
      "epic": "CS.D.EURUSD.CFD.IP",
      "level": "1.0",
      "limit": "1.0",
      "market_name": "example",
      "period": "example",
      "result": "example",
      "size": "1.0",
      "stop": "1.0",
      "stop_type": "example",
      "time": "example"
    }
  ],
  "metadata": {
    "paging": {
      "next": "example",
      "size": 1
    }
  }
}

Limitations

  • Returned resources and fields depend on the active account, environment, entitlements, and current IG catalogue.
  • IG can change account-specific allowances and availability independently of this library.
  • Supported period syntax and maximum history are controlled by IG.

Exceptions

Exception Trigger Recovery
AuthenticationError IG rejected the credentials, required session values were absent, or refresh failed. Re-authenticate with valid credentials before retrying.
AuthorizationError The active account cannot access the requested resource or action. Switch to an entitled account or request the required IG permission.
RateLimitError IG rejected the request because an allowance was exhausted. Wait for retry_after_seconds when present, then retry with bounded backoff.
ProviderRejectionError IG rejected an otherwise well-formed request. Inspect error_code and correct the provider-specific input or account state.
ResourceNotFoundError The requested provider resource does not exist or is inaccessible. Verify the identifier and active account before retrying.
TransportError A network or timeout failure prevented a completed read request. Retry the idempotent read with bounded backoff.
ValidationError Request construction failed or an IG response did not match the declared model. Correct invalid request fields; report provider response drift with redacted diagnostics.