Impact Open Endpoint API

Special methods designed for Client-facing applications like the Mobile and Javascript SDKs.

Operations 5

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /{tenant_alias}/open/account/{accountId}/user/{userId} Look up a user with share links (open endpoint) · Lookup a user (Open Endpoint) #
Ask an LLM
“Can I fetch a referral user along with their share links through the open endpoint?”
“Which extra fields can the open user lookup return besides personal info?”
Tell an agent
Via the open endpoint in tenant {tenant}, get user {user} on account {acct} with their share links.
Open-lookup user {user} on account {acct} in tenant {tenant} including fields {fields}.
PUT /{tenant_alias}/open/account/{accountId}/user/{userId} Create or update a user and account (open endpoint) · User Upsert (Open Endpoint) #
Ask an LLM
“Can I update a referral participant and create their account in one call if it doesn't exist?”
“What does the open upsert do when the user already exists?”
Tell an agent
Upsert user {user} on account {acct} in tenant {tenant} via the open endpoint with email {email}.
Via the open endpoint, update or create user {user} on account {acct} in tenant {tenant} with referred-by codes {codes}.
POST /{tenant_alias}/open/account/{accountId}/user/{userId} Create a new user and account (open endpoint) · Create a user and account (Open Endpoint) #
Ask an LLM
“How do I register a brand-new referral participant and their account together?”
“Does creating a user on the open endpoint need a write token or API key?”
Tell an agent
Create new user {user} with account {acct} in tenant {tenant} via the open endpoint, first name {first}.
Sign up a new open-endpoint user {user} on new account {acct} in tenant {tenant} with email {email}.
DELETE /{tenant_alias}/open/account/{accountId}/user/{userId} Delete a user (open endpoint) · Delete a user (Open Endpoint) #
Ask an LLM
“Can I remove a referral user without deleting the account they belong to?”
“Is there a do-not-track option when deleting a user?”
Tell an agent destructive · confirm first
Delete user {user} from account {acct} in tenant {tenant} via the open endpoint.
Delete open-endpoint user {user} on account {acct} in tenant {tenant} and set do-not-track to {dnt}.
GET /{tenant_alias}/open/user Find a user by referral code (open endpoint) · Get a user by a referral code (Open Endpoint) #
Ask an LLM
“Can a front end resolve a referral code to its user through the open endpoint?”
“Is the open lookup-by-code endpoint enabled by default?”
Tell an agent
Via the open endpoint in tenant {tenant}, find who owns referral code {code}.
Open-lookup the user behind code {code} in tenant {tenant}.

Documentation

Specifications

Other Resources

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/impact:impact-open-endpoint-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

impact-open-endpoint-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: impact.com API - User Open Endpoint API
  description: 'Users are the people in your program. In other places a User might also be called a Contact, Lead or Participant. Users are each mapped to one specific account.

    The following information is controlled at the user level: First and last name, Email address, Referral code, Share links, Custom fields.'
  version: 2.0.0
servers:
- url: https://app.referralsaasquatch.com/api/v1
  description: Production Server
security:
- basicAuth: []
tags:
- name: Open Endpoint
  description: Special methods designed for Client-facing applications like the Mobile and Javascript SDKs.
paths:
  /{tenant_alias}/open/account/{accountId}/user/{userId}:
    get:
      summary: Lookup a user (Open Endpoint)
      operationId: openGetUser
      tags:
      - Open Endpoint
      description: This method looks up a user based on their `id` and returns their personal information including sharelinks. This endpoint requires authentication via a write token or API credentials.
      security:
      - APIKey: []
      - UserJWT: []
      parameters:
      - $ref: '#/components/parameters/tenant_alias'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/userId'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/extraFields'
      responses:
        '200':
          description: User found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenUser'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      x-codeSamples:
      - lang: cURL
        source: "curl -L \\\n  --url 'https://app.referralsaasquatch.com/api/v1/{tenant_alias}/open/account/{accountId}/user/{userId}' \\\n  --user '{AccountSID}:{AuthToken}' \\\n  --header 'Accept: */*'"
    put:
      summary: User Upsert (Open Endpoint)
      operationId: openUserUpsert
      tags:
      - Open Endpoint
      description: 'This method updates/creates a user and an account and returns the user object representing that newly created user/account.

        Because this call creates a user, it requires either a write token or an API key.'
      security:
      - APIKey: []
      - UserJWT: []
      parameters:
      - $ref: '#/components/parameters/tenant_alias'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/userId'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/extraFields'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenUserUpsert'
      responses:
        '200':
          description: Information about the upserted user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenUser'
        '403':
          $ref: '#/components/responses/ForbiddenError'
      x-codeSamples:
      - lang: cURL
        source: "curl -L \\\n  --request PUT \\\n  --url 'https://app.referralsaasquatch.com/api/v1/{tenant_alias}/open/account/{accountId}/user/{userId}' \\\n  --user '{AccountSID}:{AuthToken}' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Accept: */*'"
    post:
      summary: Create a user and account (Open Endpoint)
      operationId: openCreateUser
      tags:
      - Open Endpoint
      description: 'This method creates a user and an account and returns the user object representing that newly created user/account.

        Because this call creates a user, it requires either a write token or an API key.'
      security:
      - APIKey: []
      - UserJWT: []
      parameters:
      - $ref: '#/components/parameters/tenant_alias'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/userId'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/extraFields'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenUserUpsert'
      responses:
        '201':
          description: Information about the newly created user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenUser'
        '403':
          $ref: '#/components/responses/ForbiddenError'
      x-codeSamples:
      - lang: cURL
        source: "curl -L \\\n  --request POST \\\n  --url 'https://app.referralsaasquatch.com/api/v1/{tenant_alias}/open/account/{accountId}/user/{userId}' \\\n  --user '{AccountSID}:{AuthToken}' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Accept: */*'"
    delete:
      summary: Delete a user (Open Endpoint)
      operationId: openDeleteUser
      tags:
      - Open Endpoint
      description: Delete a user in your impact.com project. By default this endpoint only deletes a User on an Account (and not the Account itself).
      security:
      - APIKey: []
      parameters:
      - $ref: '#/components/parameters/tenant_alias'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/userId'
      - name: doNotTrack
        in: query
        description: Do not track this user (this user cannot be re-registered on the same account).
        schema:
          type: boolean
      - name: preserveEmptyAccount
        in: query
        description: Do not delete accounts when all the users in the account are deleted.
        schema:
          type: boolean
      responses:
        '204':
          description: User successfully deleted
        '404':
          $ref: '#/components/responses/NotFoundError'
      x-codeSamples:
      - lang: cURL
        source: "curl -L \\\n  --request DELETE \\\n  --url 'https://app.referralsaasquatch.com/api/v1/{tenant_alias}/open/account/{accountId}/user/{userId}' \\\n  --user '{AccountSID}:{AuthToken}' \\\n  --header 'Accept: */*'"
  /{tenant_alias}/open/user:
    get:
      summary: Get a user by a referral code (Open Endpoint)
      operationId: openGetUserByCode
      tags:
      - Open Endpoint
      security: []
      description: Looks up a user based upon their `ReferralCode` and returns their personal information. This is an Open Endpoint and disabled by default.
      parameters:
      - $ref: '#/components/parameters/tenant_alias'
      - name: referralCode
        in: query
        required: true
        schema:
          type: string
        description: The code with which to lookup the user.
      responses:
        '200':
          description: Found user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserByCode'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      x-codeSamples:
      - lang: cURL
        source: "curl -L \\\n  --url 'https://app.referralsaasquatch.com/api/v1/{tenant_alias}/open/user' \\\n  --user '{AccountSID}:{AuthToken}' \\\n  --header 'Accept: */*'"
components:
  schemas:
    Error:
      properties:
        statusCode:
          description: The HTTP status code of the error.
          type: integer
          format: int32
          example: 404
        message:
          description: The human-readable description of what went wrong. Use this to help you debug.
          type: string
        apiErrorCode:
          description: A machine-readable error code.
          type: string
        rsCode:
          description: A secondary machine-readable error code.
          type: string
          example: RS042
    UserByCode:
      description: Minimal user information returned when looking up a user by referral code from the open endpoint.
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the user.
          example: abc123
        accountId:
          type: string
          description: The unique identifier of the account the user belongs to.
          example: abc123
        firstName:
          type: string
          description: The user's first name.
          example: Bob
        lastInitial:
          type: string
          description: The first initial of the user's last name.
          example: T
        referralCode:
          type: string
          description: The user's primary referral code.
          example: CFMVQHNUEU2AWWDO
        imageUrl:
          type: string
          description: URL of the user's profile image.
          example: ''
    OpenUserUpsert:
      title: A Open User object for Upsert/Create
      description: An object describing an individual user submitted to an open endpoint when you want to create or update a user.
      required:
      - id
      - accountId
      properties:
        id:
          type: string
          description: The unique identifier provided for this user. Use the user's email as their user Id.
          example: bob.testerson@example.com
        accountId:
          type: string
          description: The unique identifier of the account. Value must match `id`. Use the user's email as their account Id.
          example: bob.testerson@example.com
        firstName:
          type: string
          description: The user's first name.
          example: Bob
        lastName:
          type: string
          description: The user's last name.
          example: Testerson
        email:
          type: string
          format: email
          description: The email address provided for the user.
          example: bob.testerson@example.com
        referable:
          type: boolean
          description: Flag to determine whether a user is able to be referred.
        referralCodes:
          type: object
          additionalProperties:
            type: string
          description: The primary custom referral codes for different programs, mapping `programId` to `code`.
        locale:
          type: string
          description: The user's locale, used for Internationalization (e.g., `en_US`).
          example: en_US
        countryCode:
          type: string
          description: The user's ISO 3166-1 Alpha-2 country code (e.g., `US`).
          example: US
        dateUsTaxFormSubmitted:
          type: integer
          format: int64
          description: The timestamp of when a user's W-9 tax form was submitted.
        referredByCodes:
          type: array
          items:
            type: string
          description: An array of referral codes used to refer this account.
        cookies:
          type: string
          description: The Base64URL encoded attribution cookie values.
          example: eyJjb29raWVJZCI6ImFiYzEyMyJ9
        segments:
          type: array
          items:
            type: string
          description: A list of operations for adding and removing a user from segments (e.g., `["segment1", "~segment2"]`).
        shareLinks:
          type: object
          additionalProperties:
            type: string
          description: The primary custom shareLinks for different programs, mapping `programId` to `sharelink`.
        customFields:
          type: object
          additionalProperties: true
          description: An object containing the custom fields for this user.
    OpenUser:
      description: A user object returned by open endpoints. Includes program share links and custom fields.
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the user.
          example: abc123
        accountId:
          type: string
          description: The unique identifier of the account the user belongs to.
          example: abc123
        firstName:
          type: string
          description: The user's first name.
          example: Bob
        lastName:
          type: string
          description: The user's last name.
          example: Testerson
        email:
          type: string
          format: email
          description: The user's email address.
          example: bob.testerson@example.com
        imageUrl:
          type: string
          description: URL of the user's profile image.
          example: ''
        cookieId:
          type: string
          nullable: true
          description: The cookie ID associated with this user.
          example: abc123cookie
        locale:
          type: string
          nullable: true
          description: The user's locale (e.g. `en_US`).
          example: en_US
        countryCode:
          type: string
          nullable: true
          description: The user's ISO 3166-1 Alpha-2 country code (e.g. `US`).
          example: US
        referable:
          type: boolean
          description: Whether this user can be referred by another user.
          example: true
        firstSeenIP:
          type: string
          nullable: true
          description: The IP address the user was first seen from.
          example: 203.0.113.42
        lastSeenIP:
          type: string
          nullable: true
          description: The IP address the user was last seen from.
          example: 203.0.113.42
        dateCreated:
          type: integer
          format: int64
          description: Unix timestamp (milliseconds) when the user was created.
          example: 1774386824964
        referralCodes:
          type: object
          additionalProperties:
            type: string
          description: A map of program IDs to the user's referral code for that program.
          example:
            '47255': BOBTESTERSON
        programShareLinks:
          $ref: '#/components/schemas/ProgramShareLink'
        customFields:
          type: object
          additionalProperties: true
          description: Custom fields for this user.
        segments:
          type: array
          items:
            type: string
          description: The segments this user belongs to.
        referredByCodes:
          type: array
          items:
            type: string
          description: Referral codes used to refer this user.
          example:
          - NCC8IQ4ADTVDQAOA
    ProgramShareLink:
      description: A map of program IDs to share link sets for that program.
      type: object
      additionalProperties:
        type: object
        properties:
          cleanShareLink:
            type: string
            format: uri
            description: The clean (unencoded) primary share link for this program.
            example: https://share.impact.squatchtesting.com/mzbnEyE
          UNKNOWN:
            type: object
            additionalProperties:
              type: string
              format: uri
          EMAIL:
            type: object
            additionalProperties:
              type: string
              format: uri
          MOBILE:
            type: object
            additionalProperties:
              type: string
              format: uri
          EMBED:
            type: object
            additionalProperties:
              type: string
              format: uri
          POPUP:
            type: object
            additionalProperties:
              type: string
              format: uri
          HOSTED:
            type: object
            additionalProperties:
              type: string
              format: uri
  responses:
    NotFoundError:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ForbiddenError:
      description: Forbidden/Endpoint Disabled
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnauthorizedError:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    extraFields:
      name: extraFields
      in: query
      schema:
        type: string
      description: The fields to be included in the response in addition to all the default fields. Cannot coexist with `fields`.
      style: form
      explode: false
    fields:
      name: fields
      in: query
      schema:
        type: string
      description: The fields to be included in the response. Cannot coexist with `extraFields`.
      style: form
      explode: false
    accountId:
      name: accountId
      in: path
      description: The ID of the account.
      required: true
      schema:
        type: string
    userId:
      name: userId
      in: path
      description: The ID of the user.
      required: true
      schema:
        type: string
    tenant_alias:
      name: tenant_alias
      in: path
      description: Tenant being referenced. E.g. `"aboih12h16t"`
      required: true
      schema:
        type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Use your AccountSID as the username and AuthToken as the password.
    APIKey:
      type: http
      scheme: basic
      description: Authorize your requests using a tenant's API Key. Use this method only in server-to-server interactions.
    UserJWT:
      type: apiKey
      in: header
      name: X-SaaSquatch-User-Token
      description: A JWT for a given user. Used by the Mobile and Web SDKs and other client-side contexts via Open Endpoints.
x-default-client: cURL