Oneprofile Suppression API

The workspace do-not-contact list, enforced before every send.

GitHub OpenAPI

Operations 6

DELETE /do-not-contact/ Delete do-not-contact entries #
GET /do-not-contact/ List do-not-contact entries #
POST /do-not-contact/bulk/ Add do-not-contact entries #
POST /do-not-contact/bulk/preview/ Preview adding do-not-contact entries #
GET /do-not-contact/export/ Export the do-not-contact list #
GET /do-not-contact/length/ Count do-not-contact entries #

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/getoneprofile-ai:getoneprofile-ai-suppression-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

getoneprofile-ai-suppression-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@getoneprofile.ai
    name: Oneprofile Support
  description: REST API reference for Oneprofile, the GTM data layer for your CRM. Manage tables, enrichments, and integrations. Authenticate with an API key to get started.
  termsOfService: https://www.getoneprofile.ai/terms
  title: Reference | Oneprofile Suppression API
  version: 1.0.42765316646
tags:
- description: The workspace do-not-contact list, enforced before every send.
  name: suppression
paths:
  /do-not-contact/:
    delete:
      description: Removal is deliberate and manual-only; no automated path unsuppresses. A contact an entry a person added stopped before any step reached them goes on from step one, as a new contact would; one already reached stays as it is, and so does everyone an unsubscribe, a bounce or an inbox Do not contact put on the list. Ids that are no longer on the list are skipped, and `count` says how many went.
      operationId: delete_do_not_contact
      parameters:
      - description: IDs of the entries to delete
        in: query
        name: ids
        required: true
        schema:
          description: IDs of the entries to delete
          items:
            format: uuid
            type: string
          maxItems: 100
          minItems: 1
          title: Ids
          type: array
      - description: Report what would be deleted, and delete nothing.
        in: query
        name: dry_run
        required: false
        schema:
          default: false
          description: Report what would be deleted, and delete nothing.
          title: Dry Run
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessfullyDeletedResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Delete do-not-contact entries
      tags:
      - suppression
    get:
      description: 'Newest first unless `order_by` says otherwise: `created_at` orders by when each entry was added, `value` by the address or domain. Ties go by id. Each entry says which sequence the address was most recently on when it was marked, and which teammate marked it. `GET /do-not-contact/length/` counts the same filters.'
      operationId: list_do_not_contact
      parameters:
      - in: query
        name: filters
        required: true
        schema:
          $ref: '#/components/schemas/ListDoNotContactFilterParamsSchema'
      - description: The number of items to return.
        in: query
        name: limit
        required: false
        schema:
          default: 10
          description: The number of items to return.
          maximum: 100
          minimum: 1
          title: Limit
          type: integer
      - in: query
        name: order_by
        required: false
        schema:
          $ref: '#/components/schemas/OrderingParametersForIdCreatedAtValue'
          default: created_at
          enum:
          - id
          - created_at
          - value
          type: string
      - in: query
        name: order_direction
        required: false
        schema:
          default: desc
          enum:
          - asc
          - desc
          title: Order Direction
          type: string
      - description: Set the cursor to the next or previous page. You can get the cursor from the previous page's response.
        in: query
        name: cursor
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Set the cursor to the next or previous page. You can get the cursor from the previous page's response.
          title: Cursor for pagination.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_SuppressionListEntryReadSchema_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: List do-not-contact entries
      tags:
      - suppression
  /do-not-contact/bulk/:
    post:
      description: Paste or upload addresses and domains in bulk; duplicates are ignored. Answers the entries that were new, and the inputs that could not be read as an address or a domain. A reply the AI wrote for anyone they reach leaves Needs approval, never to be sent. With `stop_live_sequences`, everyone the values reach is also stopped in every live sequence, reading Do not contact, as the inbox's Do not contact stops them; without it, the send check stops them one step at a time.
      operationId: add_do_not_contact
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuppressionAddSchema'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppressionBulkCreateResponseSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Add do-not-contact entries
      tags:
      - suppression
  /do-not-contact/bulk/preview/:
    post:
      description: Takes the add's own body, reads the values and adds nothing. Answers the whole domains among them that are personal email providers or this workspace's own, which the add box asks about first, and with `stop_live_sequences` how many live places in sequences the add would stop, and in which sequences.
      operationId: preview_add_do_not_contact
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuppressionAddSchema'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppressionAddPreviewSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Preview adding do-not-contact entries
      tags:
      - suppression
  /do-not-contact/export/:
    get:
      description: Plain text, one value per line, importable anywhere.
      operationId: export_do_not_contact
      responses:
        '200':
          content:
            application/json:
              schema: {}
          description: Plain text file, one value per line.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Export the do-not-contact list
      tags:
      - suppression
  /do-not-contact/length/:
    get:
      description: How many entries the list's filters select.
      operationId: count_do_not_contact
      parameters:
      - description: Filter by value (case-insensitive contains)
        in: query
        name: search
        required: false
        schema:
          anyOf:
          - maxLength: 320
            type: string
          - type: 'null'
          description: Filter by value (case-insensitive contains)
          title: Search
      - description: Only addresses, or only whole domains
        in: query
        name: kind
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/SuppressionKind'
          - type: 'null'
          description: Only addresses, or only whole domains
          title: Kind
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppressionCountSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Count do-not-contact entries
      tags:
      - suppression
components:
  schemas:
    ListDoNotContactFilterParamsSchema:
      description: Query parameters for filtering the do-not-contact list.
      properties:
        kind:
          anyOf:
          - $ref: '#/components/schemas/SuppressionKind'
          - type: 'null'
          description: Only addresses, or only whole domains
        search:
          anyOf:
          - maxLength: 320
            type: string
          - type: 'null'
          description: Filter by value (case-insensitive contains)
          title: Search
      title: ListDoNotContactFilterParamsSchema
      type: object
    SuppressionEntryReadSchema:
      properties:
        created_at:
          format: date-time
          title: Created At
          type: string
        id:
          format: uuid
          title: Id
          type: string
        kind:
          $ref: '#/components/schemas/SuppressionKind'
        marked_by:
          anyOf:
          - type: string
          - type: 'null'
          description: User id of the teammate who first marked this entry. Null when a contact or a bounce put it there, when an API key added it, or when it is from before teammates were kept.
          title: Marked By
        source:
          $ref: '#/components/schemas/SuppressionSource'
        value:
          title: Value
          type: string
      required:
      - id
      - kind
      - value
      - source
      - created_at
      title: SuppressionEntryReadSchema
      type: object
    ForbiddenResponse:
      properties:
        detail:
          description: The detail of why the request is forbidden.
          title: Detail
          type: string
      required:
      - detail
      title: ForbiddenResponse
      type: object
    SuppressionListEntryReadSchema:
      properties:
        created_at:
          format: date-time
          title: Created At
          type: string
        id:
          format: uuid
          title: Id
          type: string
        kind:
          $ref: '#/components/schemas/SuppressionKind'
        last_sequence:
          anyOf:
          - $ref: '#/components/schemas/LastSequenceReadSchema'
          - type: 'null'
          description: The sequence this address was most recently on when it was marked. Null for a whole domain, and for an address that was never on a sequence.
        marked_by:
          anyOf:
          - type: string
          - type: 'null'
          description: User id of the teammate who first marked this entry. Null when a contact or a bounce put it there, when an API key added it, or when it is from before teammates were kept.
          title: Marked By
        source:
          $ref: '#/components/schemas/SuppressionSource'
        value:
          title: Value
          type: string
      required:
      - id
      - kind
      - value
      - source
      - created_at
      - last_sequence
      title: SuppressionListEntryReadSchema
      type: object
    UnprocessableEntityIssue:
      properties:
        input:
          anyOf:
          - type: string
          - type: integer
          - type: number
          - type: boolean
          - items: {}
            type: array
          - additionalProperties: true
            type: object
          description: The user's input that caused the error.
          title: Input
        loc:
          description: The location of the error. Always contains 1 or 2 elements. The first element is the type of location (e.g. 'body', 'query', 'path', 'header'). The second element is the name of the field that caused the error. If the error is not related to a specific field, the second element is not present.
          items:
            type: string
          title: Loc
          type: array
        msg:
          description: The message of the error. The error message to show to the user.
          title: Msg
          type: string
        type:
          description: The type of the error. Useful for frontend code to handle different types of errors.
          title: Type
          type: string
      required:
      - loc
      - msg
      - type
      - input
      title: UnprocessableEntityIssue
      type: object
    SuppressionAddPreviewSchema:
      properties:
        own_domains:
          description: Whole domains among the values that this workspace itself mails from.
          items:
            type: string
          title: Own Domains
          type: array
        personal_email_providers:
          description: Whole domains among the values that are personal email providers.
          items:
            type: string
          title: Personal Email Providers
          type: array
        sequence_names:
          description: The sequences holding them, by name; empty without `stop_live_sequences`.
          items:
            type: string
          title: Sequence Names
          type: array
        stopped:
          description: How many live places in sequences the add would stop; 0 without `stop_live_sequences`.
          title: Stopped
          type: integer
      required:
      - personal_email_providers
      - own_domains
      - stopped
      - sequence_names
      title: SuppressionAddPreviewSchema
      type: object
    ServerErrorResponse:
      properties:
        detail:
          description: The detail of why the server returned an error.
          title: Detail
          type: string
      required:
      - detail
      title: ServerErrorResponse
      type: object
    PaginatedResponse_SuppressionListEntryReadSchema_:
      properties:
        data:
          description: The list of ResponseItems.
          items:
            $ref: '#/components/schemas/SuppressionListEntryReadSchema'
          title: Data
          type: array
        next_page_cursor:
          anyOf:
          - type: string
          - type: 'null'
          description: The cursor to the next page. If there are no more pages, this is None.
        previous_page_cursor:
          anyOf:
          - type: string
          - type: 'null'
          description: The cursor to the previous page. If there are no previous pages, this is None.
      title: PaginatedResponse[SuppressionListEntryReadSchema]
      type: object
    SuppressionCountSchema:
      properties:
        count:
          title: Count
          type: integer
      required:
      - count
      title: SuppressionCountSchema
      type: object
    OrderingParametersForIdCreatedAtValue:
      enum:
      - id
      - created_at
      - value
      title: OrderingParametersForIdCreatedAtValue
      type: string
    SuppressionSource:
      description: How an entry got onto the list, kept for audit and for the UI's story.
      enum:
      - manual
      - assistant
      - opt_out_reply
      - reply_stop
      - inbox_action
      - opt_out_link
      - hard_bounce
      title: SuppressionSource
      type: string
    SuppressionKind:
      description: Whether an entry blocks one address or a whole domain.
      enum:
      - email
      - domain
      title: SuppressionKind
      type: string
    SuppressionAddSchema:
      properties:
        stop_live_sequences:
          default: false
          description: Also stop everyone the values reach in every live sequence, reading Do not contact. Off, they stay where they are and the send check stops them one step at a time.
          title: Stop Live Sequences
          type: boolean
        values:
          description: Addresses and domains, one per item. A value containing @ suppresses one address; a bare domain suppresses everyone at it.
          items:
            maxLength: 320
            minLength: 1
            type: string
          maxItems: 10000
          minItems: 1
          title: Values
          type: array
      required:
      - values
      title: SuppressionAddSchema
      type: object
    LastSequenceReadSchema:
      properties:
        name:
          title: Name
          type: string
        sequence_id:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: The sequence to open; null once it has been deleted, its name still kept.
          title: Sequence Id
      required:
      - name
      - sequence_id
      title: LastSequenceReadSchema
      type: object
    UnprocessableEntityResponse:
      properties:
        detail:
          description: The detail of the error. This is the error message to show to the user. You should also use the issues field to show more detailed error messages per field. Use this field for a single liner error message.
          title: Detail
          type: string
        issues:
          description: The issues that caused the error. There can be multiple issues. Each issue is a user-facing error message.
          items:
            $ref: '#/components/schemas/UnprocessableEntityIssue'
          title: Issues
          type: array
      required:
      - detail
      - issues
      title: UnprocessableEntityResponse
      type: object
    UnauthorizedResponse:
      properties:
        detail:
          description: The detail of why the request is unauthorized.
          title: Detail
          type: string
      required:
      - detail
      title: UnauthorizedResponse
      type: object
    SuppressionBulkCreateResponseSchema:
      properties:
        data:
          description: The entries that were new, in the order given.
          items:
            $ref: '#/components/schemas/SuppressionEntryReadSchema'
          title: Data
          type: array
        rejected:
          description: Inputs that could not be parsed.
          items:
            type: string
          title: Rejected
          type: array
        sequence_names:
          description: The sequences that held them, by name; empty without `stop_live_sequences`.
          items:
            type: string
          title: Sequence Names
          type: array
        stopped:
          default: 0
          description: How many live places in sequences the add stopped; 0 without `stop_live_sequences`.
          title: Stopped
          type: integer
      required:
      - data
      - rejected
      title: SuppressionBulkCreateResponseSchema
      type: object
    SuccessfullyDeletedResponse:
      properties:
        count:
          default: 1
          description: The number of resources that were deleted.
          title: Count
          type: integer
        detail:
          description: The detail of why the resource was deleted.
          title: Detail
          type: string
      required:
      - detail
      title: SuccessfullyDeletedResponse
      type: object
  securitySchemes:
    APIKeyHeader:
      in: header
      name: X-API-Key
      type: apiKey
    HTTPBearer:
      scheme: bearer
      type: http