DEV Community segments API

The segments API from DEV Community — 5 operation(s) for segments.

Operations 7

GET /api/segments Manually managed audience segments #
POST /api/segments Create a manually managed audience segment #
GET /api/segments/{id} A manually managed audience segment #
DELETE /api/segments/{id} Delete a manually managed audience segment #
GET /api/segments/{id}/users Users in a manually managed audience segment #
PUT /api/segments/{id}/add_users Add users to a manually managed audience segment #
PUT /api/segments/{id}/remove_users Remove users from a manually managed audience segment #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/devto-segments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

devto-segments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Forem API V1 agent_sessions Segments API
  version: 1.0.0
  description: "Access Forem articles, users and other resources via API.\n        For a real-world example of Forem in action, check out [DEV](https://www.dev.to).\n        All endpoints can be accessed with the 'api-key' header and a accept header, but\n        some of them are accessible publicly without authentication.\n\n        Dates and date times, unless otherwise specified, must be in\n        the [RFC 3339](https://tools.ietf.org/html/rfc3339) format."
servers:
- url: https://dev.to/api
  description: Production server
security:
- api-key: []
tags:
- name: segments
paths:
  /api/segments:
    get:
      summary: Manually managed audience segments
      tags:
      - segments
      description: 'This endpoint allows the client to retrieve a list of audience segments.


        An audience segment is a group of users that can be targeted by a Billboard. This API only permits managing segments you create and maintain yourself.


        The endpoint supports pagination, and each page will contain `30` segments by default.'
      operationId: getSegments
      parameters:
      - $ref: '#/components/parameters/perPageParam30to1000'
      responses:
        '200':
          description: A List of manually managed audience segments
          content:
            application/json:
              example:
              - id: 34
                created_at: '2026-05-28T12:45:19.104-06:00'
                name: null
                type_of: manual
                updated_at: '2026-05-28T12:45:19.104-06:00'
                user_count: 1
              - id: 33
                created_at: '2026-05-28T12:45:19.016-06:00'
                name: null
                type_of: manual
                updated_at: '2026-05-28T12:45:19.016-06:00'
                user_count: 3
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Segment'
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                error: unauthorized
                status: 401
    post:
      summary: Create a manually managed audience segment
      tags:
      - segments
      description: 'This endpoint allows the client to create a new audience segment.


        An audience segment is a group of users that can be targeted by a Billboard. This API only permits managing segments you create and maintain yourself.'
      operationId: createSegment
      responses:
        '201':
          description: A manually managed audience segment
          content:
            application/json:
              example:
                id: 35
                created_at: '2026-05-28T12:45:19.421-06:00'
                name: null
                type_of: manual
                updated_at: '2026-05-28T12:45:19.421-06:00'
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                error: unauthorized
                status: 401
  /api/segments/{id}:
    get:
      summary: A manually managed audience segment
      tags:
      - segments
      description: This endpoint allows the client to retrieve a single manually-managed audience segment specified by ID.
      operationId: getSegment
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
          minimum: 1
      responses:
        '200':
          description: The audience segment
          content:
            application/json:
              example:
                id: 36
                created_at: '2026-05-28T12:45:19.625-06:00'
                name: null
                type_of: manual
                updated_at: '2026-05-28T12:45:19.625-06:00'
                user_count: 3
              schema:
                type: object
                items:
                  $ref: '#/components/schemas/Segment'
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                error: unauthorized
                status: 401
        '404':
          description: Audience Segment Not Found
          content:
            application/json:
              example:
                error: not found
                status: 404
    delete:
      summary: Delete a manually managed audience segment
      tags:
      - segments
      description: 'This endpoint allows the client to delete an audience segment specified by ID.


        Audience segments cannot be deleted if there are still any Billboards using them.'
      operationId: deleteSegment
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
          minimum: 1
      responses:
        '200':
          description: The deleted audience segment
          content:
            application/json:
              example:
                id: 40
                created_at: '2026-05-28T12:45:20.004-06:00'
                name: null
                type_of: manual
                updated_at: '2026-05-28T12:45:20.004-06:00'
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                error: unauthorized
                status: 401
        '404':
          description: Audience Segment Not Found
          content:
            application/json:
              example:
                error: not found
                status: 404
        '409':
          description: Audience segment could not be deleted
          content:
            application/json:
              example:
                error: Segments cannot be deleted while in use by any billboards
  /api/segments/{id}/users:
    get:
      summary: Users in a manually managed audience segment
      tags:
      - segments
      description: This endpoint allows the client to retrieve a list of the users in an audience segment specified by ID. The endpoint supports pagination, and each page will contain `30` users by default.
      operationId: getUsersInSegment
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
          minimum: 1
      - $ref: '#/components/parameters/perPageParam30to1000'
      responses:
        '200':
          description: A List of users in the audience segment
          content:
            application/json:
              example:
              - type_of: user
                id: 4109
                username: username61
                name: Erminia "Pedro" \:/ Turcotte
                twitter_username: twitter61
                github_username: github61
                summary: null
                location: null
                website_url: null
                joined_at: May 28, 2026
                profile_image: /uploads/user/profile_image/4109/6812d241-6f58-4837-885e-56a5c1a1cac7.jpeg
              - type_of: user
                id: 4110
                username: username62
                name: Perry "Jazmin" \:/ Harvey
                twitter_username: twitter62
                github_username: github62
                summary: null
                location: null
                website_url: null
                joined_at: May 28, 2026
                profile_image: /uploads/user/profile_image/4110/66331066-af5b-44d8-bf8c-5a3787ecbfa2.jpeg
              - type_of: user
                id: 4111
                username: username63
                name: Kristofer "Ruth" \:/ Graham
                twitter_username: twitter63
                github_username: github63
                summary: null
                location: null
                website_url: null
                joined_at: May 28, 2026
                profile_image: /uploads/user/profile_image/4111/1536d24e-ea86-4abf-bbac-d0eef3b4ebbd.jpeg
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                error: unauthorized
                status: 401
        '404':
          description: Audience Segment Not Found
          content:
            application/json:
              example:
                error: not found
                status: 404
  /api/segments/{id}/add_users:
    put:
      summary: Add users to a manually managed audience segment
      tags:
      - segments
      description: 'This endpoint allows the client to add users in bulk to an audience segment specified by ID.


        Successes are users that were included in the segment (even if they were already in it), and failures are users that could not be added to the segment.'
      operationId: addUsersToSegment
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
          minimum: 1
      responses:
        '200':
          description: Result of adding the users to the segment.
          content:
            application/json:
              example:
                succeeded:
                - 4117
                - 4118
                - 4119
                failed: []
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                error: unauthorized
                status: 401
        '404':
          description: Audience Segment Not Found
          content:
            application/json:
              example:
                error: not found
                status: 404
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              example:
                error: 'param is missing or the value is empty: user_ids'
                status: 422
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentUserIds'
  /api/segments/{id}/remove_users:
    put:
      summary: Remove users from a manually managed audience segment
      tags:
      - segments
      description: 'This endpoint allows the client to remove users in bulk from an audience segment specified by ID.


        Successes are users that were removed; failures are users that weren''t a part of the segment.'
      operationId: removeUsersFromSegment
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
          minimum: 1
      responses:
        '200':
          description: Result of removing the users to the segment.
          content:
            application/json:
              example:
                succeeded:
                - 4136
                - 4137
                - 4138
                failed: []
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                error: unauthorized
                status: 401
        '404':
          description: Audience Segment Not Found
          content:
            application/json:
              example:
                error: not found
                status: 404
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              example:
                error: 'param is missing or the value is empty: user_ids'
                status: 422
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentUserIds'
components:
  schemas:
    User:
      description: The representation of a user returned in a list
      type: object
      properties:
        type_of:
          type: string
        id:
          type: integer
          format: int64
        username:
          type: string
        name:
          type: string
        summary:
          type:
          - string
          - 'null'
        twitter_username:
          type: string
        github_username:
          type: string
        website_url:
          type:
          - string
          - 'null'
        location:
          type:
          - string
          - 'null'
        joined_at:
          type: string
        profile_image:
          type: string
    Segment:
      description: A manually managed audience segment
      type: object
      properties:
        id:
          type: integer
          description: The ID of the segment
        type_of:
          type: string
          enum:
          - manual
          default: manual
          description: Marks the segment as manually managed (other types are internal)
        user_count:
          type: integer
          description: The current number of users in the segment
    SegmentUserIds:
      type: object
      properties:
        user_ids:
          type: array
          items:
            type: integer
          maxItems: 10000
  parameters:
    perPageParam30to1000:
      in: query
      name: per_page
      required: false
      description: Page size (the number of items to return per page). The default maximum value can be overridden by "API_PER_PAGE_MAX" environment variable.
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 1000
        default: 30
  securitySchemes:
    api-key:
      type: apiKey
      name: api-key
      in: header
      description: "API Key authentication.\n\nAuthentication for some endpoints, like write operations on the\nArticles API require a DEV API key.\n\nAll authenticated endpoints are CORS disabled, the API key is intended for non-browser scripts.\n\n### Getting an API key\n\nTo obtain one, please follow these steps:\n\n  - visit https://dev.to/settings/extensions\n  - in the \"DEV API Keys\" section create a new key by adding a\n    description and clicking on \"Generate API Key\"\n\n    ![obtain a DEV API Key](https://user-images.githubusercontent.com/37842/172718105-bd93664e-76e0-477d-99c4-265dda0b06c5.png)\n\n  - You'll see the newly generated key in the same view\n    ![generated DEV API Key](https://user-images.githubusercontent.com/37842/172718151-e7fe26a0-9937-42e8-96c6-333acdab9e49.png)"