Hey Preethi, I looked into this & here is what I found.
Your API-created COMPOSITE / AND filter is most likely being applied correctly that matches what you are seeing: inactive service accounts are excluded from the campaign. The gap is only in the report output.
The UI campaign filter builder is OR-based, and the Campaign Composition Report only exposes summary fields like Campaign Filter Name, Filter Type, Search Terms, and Filter Description. It doesn’t print the full backend criteriaList / COMPOSITE structure. So I don’t see a supported native way to force the standard report to show API-created AND logic. This looks like a report rendering limitation, not a filter execution issue.
On your second question about a custom report: yes, but not inside ISC natively. You would need to build it externally using the APIs. Colin from SailPoint pointed to this same pattern: call the needed APIs, transform the output, generate your own CSV. He did a full walkthrough at Developer Days 2023 with code on GitHub.
Three options to try:
1. Keep the API filter, document it separately: Pull the filter JSON and attach it alongside the composition report as your audit record:
GET /v2025/campaign-filters/{filterId}
The criteriaList in that response is the source of truth for the AND condition configured.
2. Build a custom report externally via API : Trigger the report, pull the output, stitch it with the filter definition in your own CSV:
POST /v2025/campaigns/{campaignId}/run-report/CAMPAIGN_COMPOSITION_REPORT
GET /v2025/campaigns/{campaignId}/reports
Ref: Get Campaign Reports | Run Campaign Report
3. Rebuild as a Search-based campaign: For Search-created campaigns, the composition report has a dedicated Search Terms column that shows the query. If audit needs the filter logic visible in the standard report itself and your exclusion logic can be expressed as a search query, this is the cleanest path.
Short answer to both your questions: no, the standard composition report won’t show API-created AND/COMPOSITE logic natively. Yes, you can make a custom report, but it has to be external using the campaign APIs.