Squarespace Profiles API

The Squarespace Profiles API allows reading customer profiles, mailing list subscribers, and donors for a Squarespace site. It supports filtering by profile type and retrieving individual profile details.

OpenAPI Specification

squarespace-profiles-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Squarespace Profiles API
  description: >-
    The Squarespace Profiles API provides access to Profile resource objects
    representing customers, mailing list subscribers, and donors associated
    with a Squarespace site. Each profile includes contact information, an
    approximate address derived from existing data, and a summary of the
    user's commerce activity such as orders and donations. This API is useful
    for CRM integrations, email marketing platforms, and customer analytics
    tools. Profile data is generated asynchronously from site activity and
    accessible through the standard Profiles panel.
  version: '1.0'
  contact:
    name: Squarespace Developer Support
    url: https://developers.squarespace.com/commerce-apis/profiles-overview
  termsOfService: https://www.squarespace.com/terms-of-service
externalDocs:
  description: Squarespace Profiles API Documentation
  url: https://developers.squarespace.com/commerce-apis/profiles-overview
servers:
  - url: https://api.squarespace.com/1.0
    description: Production Server
tags:
  - name: Profiles
    description: Customer, subscriber, and donor profile management
security:
  - bearerAuth: []
paths:
  /profiles:
    get:
      operationId: listProfiles
      summary: Retrieve All Profiles
      description: >-
        Returns a paginated list of profiles associated with the merchant site.
        Profiles represent customers, mailing list subscribers, and donors. By
        default returns up to 50 profiles per page. Results can be filtered by
        profile type, account status, or email address. Use the cursor parameter
        from the previous response's pagination.nextPageCursor to iterate through
        all profiles.
      tags:
        - Profiles
      parameters:
        - $ref: '#/components/parameters/cursor'
        - name: isCustomer
          in: query
          description: When true, filters results to only include customer profiles
          required: false
          schema:
            type: boolean
        - name: hasAccount
          in: query
          description: >-
            When true, filters to profiles associated with a Squarespace account.
            When false, filters to anonymous profiles.
          required: false
          schema:
            type: boolean
        - name: email
          in: query
          description: Filter profiles by exact email address match
          required: false
          schema:
            type: string
            format: email
      responses:
        '200':
          description: Successful response with paginated list of profiles
          content:
            application/json:
              schema:
                type: object
                properties:
                  profiles:
                    type: array
                    items:
                      $ref: '#/components/schemas/Profile'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /profiles/{profileIds}:
    get:
      operationId: getProfiles
      summary: Retrieve Specific Profiles
      description: >-
        Retrieves profile information for one or more specific profiles by their
        profile IDs. Profile IDs can be provided as a comma-separated list in
        the path. The order of profiles in the response is not guaranteed to match
        the order of IDs provided.
      tags:
        - Profiles
      parameters:
        - $ref: '#/components/parameters/profileIds'
      responses:
        '200':
          description: Successful response with the requested profiles
          content:
            application/json:
              schema:
                type: object
                properties:
                  profiles:
                    type: array
                    items:
                      $ref: '#/components/schemas/Profile'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Authenticate using an API key or OAuth access token. Include the token
        in the Authorization header as "Bearer YOUR_TOKEN".
  responses:
    BadRequest:
      description: The request was malformed or contained invalid parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication credentials are missing or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The authenticated user does not have permission to access this resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    cursor:
      name: cursor
      in: query
      description: >-
        Pagination cursor from a previous response's pagination.nextPageCursor field.
        Omit or leave empty to retrieve the first page.
      required: false
      schema:
        type: string
    profileIds:
      name: profileIds
      in: path
      description: Comma-separated list of profile IDs to retrieve
      required: true
      schema:
        type: string
  schemas:
    Profile:
      type: object
      description: >-
        A profile representing a customer, mailing list subscriber, or donor
        associated with the Squarespace site
      properties:
        id:
          type: string
          description: Unique identifier for the profile
        firstName:
          type: string
          description: First name of the profile holder
        lastName:
          type: string
          description: Last name of the profile holder
        email:
          type: string
          format: email
          description: Email address associated with the profile
        hasAccount:
          type: boolean
          description: Whether the profile is linked to a Squarespace account
        isCustomer:
          type: boolean
          description: Whether the profile has placed at least one order
        address:
          $ref: '#/components/schemas/ApproximateAddress'
        commerceStats:
          $ref: '#/components/schemas/CommerceStats'
        createdOn:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the profile was created
        modifiedOn:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the profile was last modified
    ApproximateAddress:
      type: object
      description: >-
        An approximate address derived from the profile's order history and
        account information, not necessarily verified
      properties:
        city:
          type: string
          description: City associated with the profile
        state:
          type: string
          description: State or region associated with the profile
        countryCode:
          type: string
          description: ISO 3166-1 alpha-2 country code
          pattern: '^[A-Z]{2}$'
        postalCode:
          type: string
          description: Postal or ZIP code associated with the profile
    CommerceStats:
      type: object
      description: A summary of the profile holder's commerce activity on the site
      properties:
        orderCount:
          type: integer
          description: Total number of orders placed by this profile
          minimum: 0
        orderTotal:
          $ref: '#/components/schemas/Money'
        donationCount:
          type: integer
          description: Total number of donations made by this profile
          minimum: 0
        donationTotal:
          $ref: '#/components/schemas/Money'
        firstOrderOn:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp of the profile's first order
        lastOrderOn:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp of the profile's most recent order
    Money:
      type: object
      description: A monetary value with currency
      properties:
        value:
          type: string
          description: Decimal string representation of the monetary amount
          pattern: '^-?\d+(\.\d+)?$'
        currency:
          type: string
          description: ISO 4217 three-letter currency code
          pattern: '^[A-Z]{3}$'
    Pagination:
      type: object
      description: Pagination metadata included with list responses
      properties:
        hasNextPage:
          type: boolean
          description: Indicates whether additional pages of results are available
        nextPageCursor:
          type: string
          description: Cursor value to pass in the next request to retrieve the next page
        nextPageUrl:
          type: string
          format: uri
          description: Full URL for retrieving the next page of results
    Error:
      type: object
      description: Standard error response returned by the Squarespace API
      properties:
        type:
          type: string
          description: Machine-readable error type identifier
        subtype:
          type: string
          description: Optional more specific error subtype
        message:
          type: string
          description: Human-readable description of the error
        statusCode:
          type: integer
          description: HTTP status code associated with the error