Forum Discussion

pcapazzi's avatar
pcapazzi
Practitioner
7 months ago

API to create/update Segments

Currently we have to manually create a segment to export users that meet a criteria. It would be great if we had an API endpoint to create/update segments to help manage and report on the data. 

7 Replies

  • JoeM's avatar
    JoeM
    Active Member

    We have this same issue, as we have a segment that needs to have it's criteria changed at midnight every quarter. Real pain for whoever draws the short straw on NYE, you know?

    So far, there's only one way I've found to successfully update a segment by api, and it's pretty clunky:

    I used to use this back in the day with SFMC, but the Braze endpoints are a little more finicky:

    If you use inspect mode in your browser, while on the network tab you save an update to the segment in question. From the network tab you'll be able to copy the actual request to Braze that includes your users authentication. 

    You can import that into postman, curl etc and modify as you see fit. It should work until your user auth tokens expire.

    Note: There are a ton of problems with this: It basically tricks Braze into thinking you're in your browser and clicking the buttons, so of course permissions are only scoped to that user, there are issues with how you authenticate users (SSO, IP whitelisting etc), issues if they ever change anything in the format of the api call etc. This basically works when you know you have one specific thing to do later this evening... But it DOES work.

    • pcapazzi's avatar
      pcapazzi
      Practitioner

      That is not what I'm after.

      Currently we can only create a segment using the web UI. There is no API endpoint to create or update a segment. I'm suggesting developing an endpoint that can do this. 

      Currently we can do the following using APIs:

      • List Existing Segments
      • Get Definitions of Existing Segments
      • Export User Data Identified in an Existing Segment

      What we cannot do with segments via the API:

      • Create a segment
      • Update a segment (change the definition)
  • DavidO's avatar
    DavidO
    Strategist II

    Gotcha. Great product suggestions indeed. 😊

  • bob's avatar
    bob
    Specialist

    Why do you need to export this segment of users? I wonder if we knew more about what you're achieving, there might be another solution.

    This is perhaps something that could be implemented as a webhook campaign and Braze could push the data to a destination.

    Can you use currents or the snowflake integration? That would let you dump all the data and query it externally.

    Regardless of anything though, there is a clear gap in the API.

    If Braze were to create such an endpoint, I feel that they'd want to implement it such a way that it maintained feature parity with the segments in the UI - which is presumably a more challenging thing to implement. I wonder though if it could be limited to those only defined by SQL, which would keep things simple from an implementation standpoint.


     

    • pcapazzi's avatar
      pcapazzi
      Practitioner

      Hi bob ,

      In one case we are tracking a set of a custom attributes that changes. We have a segment with a list of all of those attributes. We download the segment to get the applicable users and the values of the attributes. After a set period of time we remove applicable attributes from the segment. I'd really like to be able to have an API call that removes those attributes from the segment. 

      I agree with you that it can be challenging. Some kind of basic SQL language that supports the level of selection that can be defined in the UI would be great. I think documenting how the selection is currently constructed is not very difficult though. 

      (attribute1 is not blank or attribute2 is not blank) and external user id is not blank

      I can write a process that can put together a new string and replace it:

      (attribute1 is not blank) and external user id is not blank

      There are other applications as well. 

      Thanks.

      • Joseph_C's avatar
        Joseph_C
        Practitioner II

        Really interesting thread - very curious how/why you're using this!

        My initial thought is to just create as many segments as you need up front, instead of trying to update a single segment. But, that may not give you the historical tracking you need (or at least makes it difficult)?

        Trying to get to the root of your usecase/problem pcapazzi... Can you tell me more about the custom attributes? Are they time sensitive details like `marchPurchaseDetails`?