--- title: "Audit Log Streams" description: "Learn how to stream Infisical Audit Logs to external logging providers." --- Audit log streams is a paid feature. If you're using Infisical Cloud, then it is available under the **Enterprise Tier**. If you're self-hosting Infisical, then you should contact team@infisical.com to purchase an enterprise license to use it. Infisical Audit Log Streaming enables you to transmit your organization's Audit Logs to external logging providers for monitoring and analysis. The logs are formatted in JSON, requiring your logging provider to support JSON-based log parsing. ## Overview ![stream create](/images/platform/audit-log-streams/stream-create.png) ![stream create](/images/platform/audit-log-streams/stream-inputs.png) Provide the following values The HTTPS endpoint URL of the logging provider that collects the JSON stream. The HTTP headers for the logging provider for identification and authentication. ![stream listt](/images/platform/audit-log-streams/stream-list.png) Your Audit Logs are now ready to be streamed. ## Example Providers ### Better Stack ![better stack connect source](/images/platform/audit-log-streams/betterstack-create-source.png) ![better stack connect](/images/platform/audit-log-streams/betterstack-source-details.png) 1. Copy the **endpoint** from Better Stack to the **Endpoint URL** field. 3. Create a new header with key **Authorization** and set the value as **Bearer \**. ### Datadog ![api key create](/images/platform/audit-log-streams/datadog-api-sidebar.png) ![api key form](/images/platform/audit-log-streams/data-create-api-key.png) ![api key form](/images/platform/audit-log-streams/data-dog-api-key.png) ![datadog url](/images/platform/audit-log-streams/datadog-logging-endpoint.png) 1. Navigate to the [Datadog Send Logs API documentation](https://docs.datadoghq.com/api/latest/logs/?code-lang=curl&site=us5#send-logs). 2. Pick your Datadog account region. 3. Obtain your Datadog logging endpoint URL. ![datadog api key details](/images/platform/audit-log-streams/datadog-source-details.png) 1. Copy the **logging endpoint** from Datadog to the **Endpoint URL** field. 2. Copy the **API Key** from previous step 3. Create a new header with key **DD-API-KEY** and set the value as **API Key**. ## Audit Log Stream Data Each log entry sent to the external logging provider will follow the same structure. ### Example Log Entry ```created-secret.json { "id": "7dc1713b-d787-4147-9e21-770be01cc992", "actor": "user", "actorMetadata": { "email": "example@infisical.com", "userId": "7383b701-d83f-45c0-acb4-04e138b987ab", "username": "example@infisical.com" }, "ipAddress": "127.0.0.1", "eventType": "create-secret", "eventMetadata": { "secretId": "3e5c796e-6599-4181-8dca-51133bb3acd0", "secretKey": "TEST-SECRET", "secretPath": "/", "environment": "dev", "secretVersion": 1 }, "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", "userAgentType": "web", "expiresAt": "2025-01-18T01:11:25.552Z", "createdAt": "2025-01-15T01:11:25.552Z", "updatedAt": "2025-01-15T01:11:25.552Z", "orgId": "785649f1-ff4b-4ef9-a40a-9b9878e46e57", "projectId": "09bfcc01-0917-4bea-9c7a-2d320584d5b1", "projectName": "example-project" } ``` ### Audit Logs Structure The unique identifier for the log entry. The entity responsible for performing or causing the event; this can be a user or service. The metadata associated with the actor. This varies based on the actor type. This metadata is present when the `actor` field is set to `user`. The unique identifier for the actor. The email address of the actor. The username of the actor. This metadata is present when the `actor` field is set to `identity`. The unique identifier for the identity. The name of the identity. This metadata is present when the `actor` field is set to `service`. The unique identifier for the service. The name of the service. If the `actor` field is set to `platform`, `scimClient`, or `unknownUser`, the `actorMetadata` field will be an empty object. The IP address of the actor. The type of event that occurred. Below you can see a list of possible event types. More event types will be added in the future as we expand our audit logs further. `get-secrets`, `delete-secrets`, `get-secret`, `create-secret`, `update-secret`, `delete-secret`, `get-workspace-key`, `authorize-integration`, `update-integration-auth`, `unauthorize-integration`, `create-integration`, `delete-integration`, `add-trusted-ip`, `update-trusted-ip`, `delete-trusted-ip`, `create-service-token`, `delete-service-token`, `create-identity`, `update-identity`, `delete-identity`, `login-identity-universal-auth`, `add-identity-universal-auth`, `update-identity-universal-auth`, `get-identity-universal-auth`, `create-identity-universal-auth-client-secret`, `revoke-identity-universal-auth-client-secret`, `get-identity-universal-auth-client-secret`, `create-environment`, `update-environment`, `delete-environment`, `add-workspace-member`, `remove-workspace-member`, `create-folder`, `update-folder`, `delete-folder`, `create-webhook`, `update-webhook-status`, `delete-webhook`, `get-secret-imports`, `create-secret-import`, `update-secret-import`, `delete-secret-import`, `update-user-workspace-role`, `update-user-workspace-denied-permissions`, `create-certificate-authority`, `get-certificate-authority`, `update-certificate-authority`, `delete-certificate-authority`, `get-certificate-authority-csr`, `get-certificate-authority-cert`, `sign-intermediate`, `import-certificate-authority-cert`, `get-certificate-authority-crl`, `issue-cert`, `get-cert`, `delete-cert`, `revoke-cert`, `get-cert-body`, `create-pki-alert`, `get-pki-alert`, `update-pki-alert`, `delete-pki-alert`, `create-pki-collection`, `get-pki-collection`, `update-pki-collection`, `delete-pki-collection`, `get-pki-collection-items`, `add-pki-collection-item`, `delete-pki-collection-item`, `org-admin-accessed-project`, `create-certificate-template`, `update-certificate-template`, `delete-certificate-template`, `get-certificate-template`, `create-certificate-template-est-config`, `update-certificate-template-est-config`, `get-certificate-template-est-config`, `update-project-slack-config`, `get-project-slack-config`, `integration-synced`, `create-shared-secret`, `delete-shared-secret`, `read-shared-secret`. The metadata associated with the event. This varies based on the event type. The user agent of the actor, if applicable. The type of user agent. The expiration date of the log entry. When this date is reached, the log entry will be deleted from Infisical. The creation date of the log entry. The last update date of the log entry. This is unlikely to be out of sync with the `createdAt` field, as we do not update log entries after they've been created. The unique identifier for the organization where the event occurred. The unique identifier for the project where the event occurred. The `projectId` field will only be present if the event occurred at the project level, not the organization level. The name of the project where the event occurred. The `projectName` field will only be present if the event occurred at the project level, not the organization level.