Internal APIs for logs - ComposioHQ/helm-charts GitHub Wiki

Action Execution Logs API - Curl Examples

NOTE Aggregate APIs over logs, for example get all logs, get logs by filter etc. do not return the "request" payload for a tool execution. To fetch details on request payload, call the "Get detailed logs by log id" API, described in Section 16.

Basic Usage

1. Get Recent Logs (Default)

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 50,
    "cursor": null,
    "case_sensitive": false,
    "search_params": []
}'

2. Get Logs with Pagination

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 20,
    "cursor": 1703123456789,
    "case_sensitive": false,
    "search_params": []
}'

Time-Based Filtering

3. Get Logs from Last 5 Minutes

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 100,
    "cursor": null,
    "case_sensitive": false,
    "from": 1703123456789,
    "to": 1703123756789,
    "search_params": []
}'

4. Get Logs from Specific Date Range

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 50,
    "cursor": null,
    "case_sensitive": false,
    "from": 1703000000000,
    "to": 1703086400000,
    "search_params": []
}'

Search by Specific Fields

5. Get Logs by Log ID

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 10,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "log_id",
            "operation": "==",
            "value": "log_abc123def456"
        }
    ]
}'

6. Get Logs by Request ID (in Response)

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 20,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "response",
            "operation": "contains",
            "value": "req_12345"
        }
    ]
}'

7. Get Logs by App/Provider

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 50,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "app_key",
            "operation": "==",
            "value": "github"
        }
    ]
}'

8. Get Logs by Action Name

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 30,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "action_key",
            "operation": "contains",
            "value": "create_issue"
        }
    ]
}'

9. Get Logs by User ID

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 25,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "user_id",
            "operation": "==",
            "value": "user_12345"
        }
    ]
}'

10. Get Logs by Entity ID

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 40,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "entity_id",
            "operation": "==",
            "value": "entity_67890"
        }
    ]
}'

Status-Based Filtering

11. Get Only Successful Executions

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 50,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "execution_status",
            "operation": "is_successful"
        }
    ]
}'

12. Get Only Failed Executions

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 50,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "execution_status",
            "operation": "is_failed"
        }
    ]
}'

Complex Filtering

13. Multiple Search Conditions (AND logic)

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 30,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "app_key",
            "operation": "==",
            "value": "github"
        },
        {
            "field": "execution_status",
            "operation": "is_successful"
        },
        {
            "field": "action_key",
            "operation": "contains",
            "value": "issue"
        }
    ]
}'

14. Search with Different Operations

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 25,
    "cursor": null,
    "case_sensitive": false,
    "search_params": [
        {
            "field": "action_key",
            "operation": "starts_with",
            "value": "create"
        },
        {
            "field": "response",
            "operation": "not_contains",
            "value": "error"
        }
    ]
}'

15. Case-Sensitive Search

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/logs' \
--header 'x-api-key: <PROJECT_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "limit": 20,
    "cursor": null,
    "case_sensitive": true,
    "search_params": [
        {
            "field": "action_key",
            "operation": "==",
            "value": "CreateIssue"
        }
    ]
}'

Get Single Log Details

16. Get Detailed Log by ID

curl --location 'https://<apollo-url>/api/v3/internal/action_execution/log/log_abc123def456' \
--header 'x-api-key: <PROJECT_API_KEY>'

Available Search Fields Reference

Field Name Maps To Description
log_id id Log ID
action_key actionName Tool/action name
app_key provider Toolkit/app name
connected_account_id connectionNanoId Connected account ID
integration_id authConfigNanoId Integration/auth config ID
execution_status errorRequest Success/failure status
response response Response content
user_id userId User ID
entity_id entityId Entity ID

Available Operations Reference

Operation Description
== Exact match
!= Not equal
contains Contains substring
not_contains Does not contain substring
starts_with Starts with
ends_with Ends with
is_successful Check if execution was successful
is_failed Check if execution failed
exists Field exists (not null)
not_exists Field does not exist (is null)

Notes

  • Replace <apollo-url> with your actual Apollo API URL
  • Replace <PROJECT_API_KEY> with your actual project API key
  • All timestamps should be in epoch milliseconds
  • The cursor parameter is used for pagination - use the nextCursor value from the previous response
  • Multiple search_params are combined with AND logic
  • The API uses POST method, not GET
  • Authentication is required via x-api-key header
⚠️ **GitHub.com Fallback** ⚠️