DMP Segments

Warning

Deprecation Notice: The Marketing Version 202508 (Marketing August 2025) will be sunset on August 17, 2026. We recommend that you migrate to the latest versioned APIs to avoid disruptions. For information on all the supported versions, refer to the migrations documentation. If you haven’t yet migrated and have questions, submit a request on the LinkedIn Developer Support Portal.

Try in Postman

DMP Segments act as staging entities, which can take in user information from a third-party provider, map them to LinkedIn member profiles, and output Ad Segments, which can then be used with other LinkedIn ads APIs. A DMP segment is tied to a sponsored account.

All API requests are represented in protocol 2.0.0 and require the header:

X-Restli-Protocol-Version: 2.0.0

Permissions

Permission Description
rw_dmp_segments Access an authenticated member's DMP Segments. Can manage and read audience DMP segments. This permission belongs to the Audiences program and is not granted automatically as part of the LinkedIn Marketing API Program.

Create DMP Segment

Try in Postman

Creates an empty DMP Segment.

Schema

Field Name Type Description
account urn The sponsored account urn that this DMP segment belongs to. Refer Find Ad Accounts By Authenticated User API to select an ad account.
description string (optional) A description for this DMP segment.
destinations See DMP Segment Destinations The destinations and various metadata that the content of this segment will be onboarded to. Currently, the only accepted value is LINKEDIN.
name string The name of this DMP segment. 
sourcePlatform string The platform from which profiles are imported. Pick the ENUM that fits your organization's use case: DIRECT_API (a LinkedIn advertiser using matched audiences for its own ad account(s)), AGENCY_API (an agency managing audiences on behalf of multiple clients), or PARTNER_API (a platform enabling many LinkedIn advertisers to sync audiences at scale, not an agency). For CSV list upload segments, use LIST_UPLOAD instead. See DMP Segment List Uploads for details.
sourceSegmentId string (optional) The foreign key on the source platform. This is an optional field that will be indexed and can be used by the source platform to find their segments.
type USER, COMPANY, USER_LIST_UPLOAD, COMPANY_LIST_UPLOAD The content type of the profiles being imported into this DMP segment. Use USER or COMPANY for streaming segments. For CSV list upload segments, use USER_LIST_UPLOAD or COMPANY_LIST_UPLOAD (with sourcePlatform set to LIST_UPLOAD) — see DMP Segment List Uploads.

Note

A sponsored account can have a maximum of 1,000 DMP segments. Attempting to create a segment beyond this limit returns a 429 error with code SEGMENT_LIMIT_EXCEEDED. Delete unused segments to free up capacity before creating new ones.

Sample Request

POST https://api.linkedin.com/rest/dmpSegments
{
   "name":"DMP Segment 1",
   "sourcePlatform":"PARTNER_API",
   "account":"urn:li:sponsoredAccount:516848833",
   "type":"USER",
   "destinations":[
      {
         "destination":"LINKEDIN"
      }
   ]
}

A successful response returns a 201 Created HTTP status code and the segment ID in the x-restli-id response header.

If the sponsored account has reached the 1,000 segment limit, the API returns a 429 error response:

{
  "code": "SEGMENT_LIMIT_EXCEEDED",
  "errorDetailType": "com.linkedin.common.error.BadRequest",
  "message": "Account has reached the maximum limit of 1000 segments. Please delete unused segments before creating new ones.",
  "errorDetails": {
    "inputErrors": [
      {
        "description": "Account has reached the maximum limit of 1000 segments. Please delete unused segments before creating new ones.",
        "input": {
          "value": {
            "stringValue": "urn:li:sponsoredAccount:{accountId}"
          },
          "inputPath": {
            "fieldPath": "/DMPSegment/account"
          }
        },
        "code": "SEGMENT_LIMIT_EXCEEDED",
        "maxValue": 1000
      }
    ]
  },
  "status": 429
}

Get DMP Segment

Try in Postman

Retrieve details of a DMP segment using the segment ID. The response returns all the fields listed for the create request and the following additional fields.

Schema

Field Name Type Description
created long Creation timestamp.
lastModified long Last updated timestamp.
id long The DMP segment id.
inputCount long (optional) The number of input entities (companies or users) that the source platform has pushed to this segment. 
destinations Object Please refer destinations segment info to see additional fields returned.

Sample Request

GET https://api.linkedin.com/rest/dmpSegments/11204

Sample Response

{
   "created":1505229479000,
   "destinations":[
      {
         "created":1505229479000,
         "lastModified":1505229479000,
         "status":"BUILDING",
         "destinationSegmentId": "urn:li:adSegment:848336"
      }
   ],
   "name":"Test DMP Segment 2",
   "sourcePlatform":"PARTNER_API",
   "id":11204,
   "lastModified":1505229479000,
   "type":"USER",
   "account":"urn:li:sponsoredAccount:516848833"
}

Get Multiple DMP Segments

Try in Postman

Fetch information on multiple DMP segments in one request.

Sample Request

GET https://api.linkedin.com/rest/dmpSegments?ids=List(10804,10814)

Sample Response

{
    "statuses": {},
    "results": {
        "10804": {
            "created": 1505229200000,
            "destinations": [
                {
                    "created": 1505229200000,
                    "lastModified": 1505229200000,
                    "status": "BUILDING",
                    "destinationSegmentId": "urn:li:adSegment:848336"
                }
            ],
            "name": "Test DMP Segment 1",
            "sourcePlatform": "PARTNER_API",
            "id": 10804,
            "lastModified": 1505229200000,
            "type": "USER",
            "account": "urn:li:sponsoredAccount:516848833"
        },
        "10814": {
            "created": 1505229479000,
            "destinations": [
                {
                    "created": 1505229479000,
                    "lastModified": 1505229479000,
                    "status": "BUILDING",
                    "destinationSegmentId": "urn:li:adSegment:999336"
                }
            ],
            "name": "Test DMP Segment 2",
            "sourcePlatform": "PARTNER_API",
            "id": 10814,
            "lastModified": 1505229479000,
            "type": "USER",
            "account": "urn:li:sponsoredAccount:516848833"
        }
    },
    "errors": {}
}

This request always returns a 200 OK HTTP status. If some of the IDs in the request are invalid, the results for the other IDs are returned. If none of the IDs in the batch are valid, the empty response {  "statuses": {},  "results": {},  "errors": {}} is returned.

Update DMP Segment

Try in Postman

Perform partial updates to some of the fields of a DMP Segment. Only name , description , and sourceSegmentId can be modified.

Sample Request

POST https://api.linkedin.com/rest/dmpSegments/10804
{
    "patch": {
        "$set": {
            "name": "New Name"
        }
    }
}

A successful response returns a 204 No Content HTTP status code.

Find DMP Segments by Account

Use the q=account parameter and the account URN to find DMP segments by the associated sponsored account. For more granular results, add sourcePlatform and sourceSegmentId query parameters to the query.

Sample Request

GET https://api.linkedin.com/rest/dmpSegments?q=account&account=urn:li:sponsoredAccount:516848833

Sample Response

{
    "elements": [
        {
            "account": "urn:li:sponsoredAccount:516848833",
            "created": 1505229200000,
            "destinations": [
                {
                    "created": 1505229200000,
                    "destinationSegmentId": "urn:li:adSegment:848336",
                    "lastModified": 1505229200000,
                    "status": "BUILDING"
                }
            ],
            "id": 10804,
            "lastModified": 1505229200000,
            "name": "Test DMP Segment 1",
            "sourcePlatform": "PARTNER_API",
            "type": "USER"
        },
        {
            "account": "urn:li:sponsoredAccount:516848833",
            "created": 1505229479000,
            "destinations": [
                {
                    "created": 1505229479000,
                    "destinationSegmentId": "urn:li:adSegment:999336",
                    "lastModified": 1505229479000,
                    "status": "BUILDING"
                }
            ],
            "id": 10814,
            "lastModified": 1505229479000,
            "name": "Test DMP Segment 2",
            "sourcePlatform": "PARTNER_API",
            "type": "USER"
        }
    ],
    "paging": {
        "count": 10,
        "links": [],
        "start": 0,
        "total": 2
    }
}

Delete DMP Segment

Delete a DMP segment using the segment ID. The response returns 204 No Content if the deletion succeeds. Everything related to this DMP segment will be deleted altogether as well, including the DMP segment destinations, the corresponding Ad segment, the DMP segment list (if there's any). You must have write access to the sponsored account that owns the DMP segment to be able to delete it. Otherwise, you'll get a 403 Forbidden error response. Deleting unused segments also frees up capacity toward the 1,000 DMP segments per sponsored account limit.

Sample Request

DELETE https://api.linkedin.com/rest/dmpSegments/10000

Sample Response

With http header enabled, you should see the following response.

HTTP/2 204
etag: W/"21"
X-Restli-Protocol-version: 2.0.0

Batch Delete DMP Segments

Delete a batch of DMP segments using segment IDs. Note that all the DMP segments must be under the same sponsored account. The response returns 204 No Content for each segment deleted successfully, or an error for each segment that failed to be deleted. For each batch delete request, all the segments must belong to the same sponsored account. You must have write access to the sponsored account that owns the DMP segments; otherwise, you'll get a 403 Forbidden error response for those segments. Deleting unused segments also frees up capacity toward the 1,000 DMP segments per sponsored account limit. All API requests are represented in protocol 2.0.0 and require the header:

X-Restli-Protocol-Version: 2.0.0

Sample Request

DELETE https://api.linkedin.com/rest/dmpSegments?ids=List(10001,10002)

Sample Response

{
    "results": {
        "10001": {
            "status": 204
        },
        "10002": {
            "status": 204
        }
    },
    "errors": {}
}

Pagination

The dmpSegments API implements pagination using the start and count parameters for finding DMP Segments by account. For more information, see Pagination.

API Error Details

The table below lists commonly encountered errors.

Code Message Description
400 Bad request Malformed requests, such as if the input dmp segment ID is not a number.
400 Error deleting AdSegments for dmp destination {dmpSegment ID}. AdSegment is being used in active campaigns.
403 No WRITE access to {sponsored account URN}. Viewer is not present or user is not authorized to delete the dmp segment.
404 Entity with key {adSegment ID} is not found. DMP segment of the provided ID in the path doesn't exist.
429 Account has reached the maximum limit of 1000 segments. Please delete unused segments before creating new ones. SEGMENT_LIMIT_EXCEEDED — Sponsored account has reached the maximum limit of 1,000 DMP segments. Delete unused segments before creating new ones.