Stannp Groups API

Manage recipient groups

OpenAPI Specification

stannp-groups-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Stannp Direct Mail Account Groups API
  description: 'REST API for programmatically sending physical letters and postcards, managing recipient groups, configuring campaigns, triggering individual mail pieces, and tracking delivery status through webhooks and event callbacks. Authentication uses API key-based HTTP Basic Auth over HTTPS.

    '
  version: 1.0.0
  contact:
    name: Stannp Support
    url: https://www.stannp.com/us/direct-mail-api/guide
  termsOfService: https://www.stannp.com
servers:
- url: https://api-us1.stannp.com/v1
  description: US API server
- url: https://api-eu1.stannp.com/v1
  description: EU API server
security:
- basicAuth: []
tags:
- name: Groups
  description: Manage recipient groups
paths:
  /groups/list:
    get:
      operationId: listGroups
      summary: List groups
      description: Retrieve a paginated list of recipient groups.
      tags:
      - Groups
      parameters:
      - name: offset
        in: query
        schema:
          type: integer
        description: Pagination offset
      - name: limit
        in: query
        schema:
          type: integer
        description: Number of results to return
      responses:
        '200':
          description: Groups retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Group'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /groups/new:
    post:
      operationId: createGroup
      summary: Create a group
      description: Create a new recipient group.
      tags:
      - Groups
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: Group name
      responses:
        '200':
          description: Group created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: integer
                    description: New group ID
        '401':
          $ref: '#/components/responses/Unauthorized'
  /groups/add/{group_id}:
    post:
      operationId: addRecipientsToGroup
      summary: Add recipients to group
      description: Add one or more existing recipients to a group.
      tags:
      - Groups
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: integer
        description: Group ID
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - recipients
              properties:
                recipients:
                  type: string
                  description: Comma-separated recipient IDs
      responses:
        '200':
          description: Recipients added successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: integer
                    description: Number of recipients added
        '401':
          $ref: '#/components/responses/Unauthorized'
  /groups/remove/{group_id}:
    post:
      operationId: removeRecipientsFromGroup
      summary: Remove recipients from group
      description: Remove one or more recipients from a group.
      tags:
      - Groups
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: integer
        description: Group ID
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - recipients
              properties:
                recipients:
                  type: string
                  description: Comma-separated recipient IDs
      responses:
        '200':
          description: Recipients removed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: integer
                    description: Number of recipients removed
        '401':
          $ref: '#/components/responses/Unauthorized'
  /groups/purge:
    post:
      operationId: purgeGroup
      summary: Purge a group
      description: Remove all recipients from a group, optionally deleting recipient records.
      tags:
      - Groups
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Group ID
                delete_recipients:
                  type: boolean
                  description: If true, delete all recipient records in the group
      responses:
        '200':
          description: Group purged successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /groups/calculate/{group_id}:
    post:
      operationId: recalculateGroup
      summary: Recalculate group
      description: Trigger a recalculation of group recipient counts and validity.
      tags:
      - Groups
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: integer
        description: Group ID
      responses:
        '200':
          description: Recalculation triggered successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /groups/delete:
    post:
      operationId: deleteGroup
      summary: Delete a group
      description: Delete a recipient group, optionally deleting associated recipient records.
      tags:
      - Groups
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Group ID
                delete_recipients:
                  type: boolean
                  description: If true, also delete all recipients in the group
      responses:
        '200':
          description: Group deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    SuccessResponse:
      type: object
      properties:
        success:
          type: boolean
        data:
          description: Result value (boolean, integer, or string depending on operation)
    Group:
      type: object
      properties:
        id:
          type: integer
        account_id:
          type: integer
        name:
          type: string
        created:
          type: string
          format: date-time
        recipients:
          type: integer
          description: Total recipient count
        valid:
          type: integer
          description: Count of valid addresses
        international:
          type: integer
          description: Count of international addresses
        skipped:
          type: integer
        status:
          type: string
        import_progress:
          type: integer
          description: Import progress percentage
        is_seeds:
          type: boolean
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          description: Error message
  responses:
    Unauthorized:
      description: Authentication required or API key invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Use your API key as the username and leave the password blank.