GoFundMe Engagement Settings API

Organization specific settings related to engagements such as email and SMS settings. We can set SMS numbers or email DNS, throttling etc.

Operations 2

GET /organizations/{id}/engagement-settings fetchOrganizationEngagementSettings #
PUT /engagement-settings/{id} updateOrganizationEngagementSettings #

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/gofundme-engagement-settings-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 email required.

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

OpenAPI Specification

gofundme-engagement-settings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GoFundMe Pro Engagement Settings API
  description: "<h1>GoFundMe Pro API</h1>\n<p>Welcome to the GoFundMe Pro API (2.0.0), a powerful toolset that empowers innovative and creative minds to engineer the world for good. This documentation walks through the API’s latest endpoints.</p>\n<p>GoFundMe Pro APIs are crafted around REST and the REST architectural style to provide developers with a stateless and language-­agnostic interface. The GoFundMe Pro API leverages HTTP verbs and response codes, OAuth2 authentication, and resource-­oriented URLs.</p>\n<p>Currently, the GoFundMe Pro API only supports JSON. All POST/PUT requests required a valid JSON object for the request body.</p>\n<h2>Errors</h2>\n<p>The GoFundMe Pro API leverages standard HTTP response status codes for it’s error responses. Error codes are:</p>\n<p><br /></p>\n<table border='1'>\n<tr>\n<th width='100px'>Error Code</th>\n<th>Meaning</th>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad Request: The request was malformed or provided incorrect/incomplete/conflicting parameters. Check the response for more detailed messaging about why the request was incorrect. Do not repeat request.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized: The API does not recognize the request as authorized. API access token may be missing or invalid.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Forbidden: The API recognizes the authorized API user, but the API user does not have correct permissions to satisfy the request.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Not Found: The resource requested does not exist or was not found.</td>\n</tr>\n<tr>\n<td>405</td>\n<td>Method Not Allowed: Some REST endpoints only accept a subset of valid REST HTTP verbs. This error is sent when an unsupported verb is requested.</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too Many Requests: The rate limit has been exceeded. See the <a href=\"#rate-limiting\">Rate Limiting</a> section for details on rate limits and response headers.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Error: The request was valid, but something failed on the server. Additional messages may be available.</td>\n</tr>\n<tr>\n<td>503</td>\n<td>Service Unavailable: The service is temporarily unavailable.</td>\n</tr>\n</table>\n<h2>Requests</h2>\n<h3>Authenticating Requests</h3>\n<p>Most API requests will need to be signed with an Access Token.</p>\n<p>Refer to the <a href=\"https://developers.gofundme.com/pro/overview/authentication\" target=\"_blank\" rel=\"noopener noreferrer\">Resource Documentation</a> for the specific call you are making to see if an access token is required for your request. See <a href=\"https://developers.gofundme.com/pro/tutorials/samples\" target=\"_blank\" rel=\"noopener noreferrer\">this page</a> for a demonstration of usage through a sample app. \n<h3>Filters</h3>\n<p>We can filter a collection based on a set of input parameters. To do so, we can modify the query string using the parameters listed below.</p>\n\n<table border='1'>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n\n<tr>\n<td>with</td>\n<td>string</td>\n<td>N/A</td>\n<td>This allows you to include nested related resource. For example, you could request a campaign along with the organization it belongs to and the designation it was allocated to. In this case, <code>with=organization,designation.</code></td>\n</tr>\n\n<tr>\n<td>per_page</td>\n<td>integer</td>\n<td>20</td>\n<td>Set the total number of resources returned per page (Maximum: 100).</td>\n</tr>\n\n<tr>\n<td>page</td>\n<td>integer</td>\n<td>1</td>\n<td>Page to return.</td>\n</tr>\n\n<tr>\n<td>sort</td>\n<td>string</td>\n<td>Depends on endpoint</td>\n<td>\nOrder the resources depending upon their attributes. Examples:\n<ul>\n<li><strong>created_at</strong>: oldest resource will come first</li>\n<li><strong>created_at:desc</strong>: newest resource will come first</li>\n<li><strong>last_name:asc,first_name:asc</strong>: order resources by last_name in alphabetical order. If same last_name, order by first_name in alphabetical order.</li>\n</ul>\n</td>\n</tr>\n\n<tr>\n<td>fields</td>\n<td>string</td>\n<td>Depends on endpoint</td>\n<td>List of resources attributes separated with comma. Narrow the list of attributes returned for each resource.</td>\n</tr>\n\n<tr>\n<td>filter</td>\n<td>string</td>\n<td>NULL</td>\n<td>\nAllow to filter the list of resources returned. Format is: <code>{association}.{attribute1}{operand}{value}</code> where: <ul>\n<li>association is the association if this is a nested filter (optional)</li>\n<li>operand is one of the following: <code><=, >=, <>, !=, =, <, or ></code>. Operand must be url encoded. (Note: if you are filtering on a boolean value, <code>true</code> can be expressed with <code>true</code> or <code>1</code>. Additionally, false can be expressed with <code>false</code> or <code>0</code>).</li>\n<li>If filtering on an association, ensure you include the nested resource using the ‘with’ parameter. with | string | NULL | This allows you to include a nested related resource. For example, you could request a collection of campaigns along with the organization they belong to and the designation they were allocated to. In this case, <code>with=organization,designation</code>.</li>\n</ul>\n</td>\n</tr>\n</table>\n\n<p>When filtering, the operand should be one of the following:</p>\n<p><code><=, >=, <>, !=, =, <, or ></code>. Operand must be url encoded. (Note: if you are filtering on a boolean value, <code>true</code> can be expressed with <code>true</code> or <code>1</code>. Additionally, <code>false</code> can be expressed with <code>false</code> or <code>0</code>).</p>\n<p>If filtering on an association, ensure you include the nested resource using the ‘with’ parameter. This allows you to include a nested related resource. For example, you could request a collection of campaigns along with the organization they belong to and the designation they were allocated to. In this case, <code>with=organization,designation</code>.</p>\n<p>Refer to the sample documentation for the specific call you are making to see which related resource can be fetched.</p>\n\n<h3>Date and Time Filtering</h3>\n<p>Unless otherwise noted, all Datetime attributes in API responses will be returned in an ISO8601 compliant format:</p>\n<><code>YYYY-MM-DDTHH:mm:ss.sssZ</code> (e.g. <code>2024-10-05T14:48:00.000Z</code>).</p>\n<h2 id=\"rate-limiting\">Rate Limiting</h2>\n<p>The GoFundMe Pro API implements rate limiting to ensure fair usage and maintain service quality for all users. Rate limits are applied on a per-application and per-user basis.</p>\n<h3>When Rate Limiting Applies</h3>\n<p>Rate limiting is applied to requests that meet the following conditions:</p>\n<ul>\n<li>The API application is <strong>not internal</strong> (external/third-party applications)</li>\n<li>The API application is associated to an Organization</li>\n</ul>\n<p>Internal applications are not subject to rate limiting.</p>\n<h3>Rate Limit Details</h3>\n<p>By default, the rate limit is:</p>\n<ul>\n<li><strong>1800 requests per minute</strong> per application</li>\n</ul>\n<p>Rate limits may be adjusted dynamically via flags for specific applications or users.</p>\n<h3>Rate Limit Headers</h3>\n<p>All API responses include the following headers to help you track your rate limit status:</p>\n<table border='1'>\n<tr>\n<th width='200px'>Header</th>\n<th>Description</th>\n</tr>\n<tr>\n<td><code>X-RateLimit-Limit</code></td>\n<td>The maximum number of requests allowed in the current time window</td>\n</tr>\n<tr>\n<td><code>X-RateLimit-Remaining</code></td>\n<td>The number of requests remaining in the current time window</td>\n</tr>\n<tr>\n<td><code>X-RateLimit-Reset</code></td>\n<td>Unix timestamp indicating when the rate limit window resets (only included when limit is exceeded)</td>\n</tr>\n<tr>\n<td><code>Retry-After</code></td>\n<td>Number of seconds to wait before retrying (only included in 429 responses)</td>\n</tr>\n</table>\n<h3>Handling Rate Limit Errors</h3>\n<p>When you exceed the rate limit, the API will return a <code>429 Too Many Requests</code> response with the following structure:</p>\n<pre><code>{\n  \"message\": \"Too Many Attempts.\",\n  \"retry_after\": 42\n}</code></pre>\n<p>The response will include the <code>Retry-After</code> header indicating how many seconds you should wait before making another request.</p>\n<h3>Best Practices</h3>\n<ul>\n<li>Monitor the <code>X-RateLimit-Remaining</code> header to track your usage</li>\n<li>Implement exponential backoff when you receive a 429 response</li>\n<li>Respect the <code>Retry-After</code> header value before retrying</li>\n<li>Cache responses when possible to reduce API calls</li>\n<li>Batch operations when the API supports it</li>\n</ul>"
  version: 2.0.0
servers:
- url: https://pro.gofundme.com/api/2.0
security:
- OAuth2Application: []
- OAuth2Member: []
tags:
- name: Engagement Settings
  description: Organization specific settings related to engagements such as email and SMS settings. We can set SMS numbers or email DNS, throttling etc.
paths:
  /organizations/{id}/engagement-settings:
    get:
      tags:
      - Engagement Settings
      summary: fetchOrganizationEngagementSettings
      description: Fetch Engagement Settings for specified Organization
      operationId: fetchOrganizationEngagementSettings
      parameters:
      - name: id
        in: path
        description: Primary identifier of Organization
        required: true
        schema:
          type: integer
          example: 82364
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngagementSettings'
        '403':
          description: Requester is not authorized to perform action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFoundResponse'
  /engagement-settings/{id}:
    put:
      tags:
      - Engagement Settings
      summary: updateOrganizationEngagementSettings
      description: Update Engagement Settings for Organization
      operationId: updateOrganizationEngagementSettings
      parameters:
      - name: id
        in: path
        description: Primary identifier of Engagement Settings
        required: true
        schema:
          example: 5ceeb33d6e201a648239a387
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EngagementSettingsFillable'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngagementSettings'
        '403':
          description: Requester is not authorized to perform action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
        '404':
          description: Engagement Settings not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFoundResponse'
      security:
      - OAuth2Member: []
components:
  schemas:
    EngagementSettings:
      title: Engagement Settings
      type: object
      allOf:
      - properties:
          id:
            description: Primary identifier of Engagement Settings
            type: string
            example: 5ceeb33d6e201a648239a387
          organization_id:
            description: ID of the Organization for which Engagement settings belongs
            type: integer
            example: 82374
          created_at:
            description: Date/time of initial Engagement Settings creation
            type: string
            format: date-time
            example: '2019-04-23T10:25:03Z'
          updated_at:
            description: Date/time of Engagement Settings last updated
            type: string
            format: date-time
            example: '2019-04-23T10:25:03Z'
        type: object
      - $ref: '#/components/schemas/EngagementSettingsFillable'
    ResourceNotFoundResponse:
      title: Resource Not Found Response
      properties:
        error:
          description: Description of detected errors in request
          type: string
      type: object
    ForbiddenResponse:
      title: Forbidden Response
      properties:
        error:
          description: Description of detected error in request
          type: string
          example: This action is unauthorized.
      type: object
    EngagementSettingsFillable:
      title: Engagement Settings Fillable
      properties:
        email_subdomain:
          description: Email subdomain
          type: string
          example: test12-org-2018102512405088
        sms:
          description: Details of Engagement Settings for SMS
          properties:
            enabled:
              description: Indicates whether SMS is enabled or not in Engagement Settings
              type: boolean
              example: true
            phone_numbers:
              description: Phone numbers for sending SMS
              type: array
              items:
                type: string
                example: 1-555-555-555
            custom_caller_id:
              description: Custom Caller ID name for sending SMS
              type:
              - string
              - 'null'
              example: John Doe
          type: object
        email:
          description: Details of Engagement Settings for email
          properties:
            custom_domain:
              description: Indicates whether custom domain for email is true or false
              type: boolean
              example: false
            domain_prefix:
              description: Domain prefix name for email
              type: string
              example: test-org-2018102512405088
            email_domain:
              description: Domain name for email
              type: string
              example: gofundme-pro-mail.org
            enabled:
              description: Indicates whether email is enabled or not
              type: boolean
              example: true
            throttling:
              description: Details of throttling:The amount of email messages sent to one ISP or remote server at one tim
              properties:
                emails_per_day:
                  description: Number of emails sent per day
                  type: integer
                  example: 1000
                emails_per_month:
                  description: Number of emails sent per month
                  type: integer
                  example: 10000
              type: object
            dns:
              description: Details of DNS settings
              properties:
                is_valid:
                  description: Indicates whether DNS is valid or not
                  type: boolean
                  example: true
                spf:
                  description: A type of DNS record that identifies which mail servers are permitted to send an email on behalf of your domain
                  properties:
                    txt_record:
                      description: Name of SPF records to be included
                      type: string
                      example: v=spf1 include:classy.org ~all
                    valid:
                      description: Indicates whether SPF is valid or not
                      type: boolean
                      example: true
                  type: object
                dkim:
                  description: DKIM Records include a signature in each email header sent
                  properties:
                    txt_record:
                      description: Signature in each email header sent
                      type: string
                      example: k=rsa; p=MIGfMA0GCSqGSIb3DQ...
                    valid:
                      description: Indicates if DKIM is valid or not
                      type: boolean
                      example: true
                  type: object
                tracking:
                  description: Details of Tracking
                  properties:
                    cname:
                      description: Cname allow for tracking of opens and clicks
                      type: string
                      example: email.domain.com
                    value:
                      description: Value for tracking
                      type: string
                      example: mailgun.org
                    valid:
                      description: Indicates whether tracking is valid or not
                      type: boolean
                      example: true
                  type: object
                incoming:
                  description: Details of Incoming
                  properties:
                    mx_records:
                      description: The MX-record contains the host name of the computer(s) that handle the emails for a domain and a prioritization code
                      type: array
                      items:
                        properties:
                          priority:
                            description: Each MX record has a priority, or a number to designate the order in which your domain name's incoming mail servers receive your email messages
                            type: number
                            example: 10
                          value:
                            description: A mail exchanger record (MX record) specifies the mail server responsible for accepting email messages on behalf of a domain name
                            type: string
                            example: mxa.mailgun.org
                        type: object
                    valid:
                      description: Indicates whether incoming is valid or not
                      type: boolean
                      example: true
                  type: object
              type: object
          type: object
      type: object
  securitySchemes:
    OAuth2Application:
      type: oauth2
      description: OAuth bearer token for client application
      flows:
        clientCredentials:
          tokenUrl: /oauth2/auth
          refreshUrl: /oauth2/auth
          scopes:
            read: Read access
            write: Write access
    OAuth2Member:
      type: oauth2
      description: OAuth bearer token for client application with additional member context
      flows:
        password:
          tokenUrl: /oauth2/auth
          refreshUrl: /oauth2/auth
          scopes:
            read: Read access
            write: Write access