Neon One Accounts API

Individual and organization constituent records, contacts, and addresses.

Business capability
Customer Data Management BC-420.10

Operations 22

GET /accounts List accounts #
POST /accounts Create an account #
GET /accounts/{id} Retrieve an account #
PUT /accounts/{id} Update an account #
POST /accounts/search Search accounts #
GET /accounts/search/searchFields List account search fields #
GET /accounts/search/outputFields List account output fields #
POST /accounts/link Link two accounts #
POST /accounts/unlink Unlink two previously merged accounts #
GET /accounts/{id}/contacts List contacts on an organization account #
POST /accounts/{id}/contacts Add a contact to an organization account #
GET /accounts/{id}/contacts/{contactId} Retrieve a contact #
PUT /accounts/{id}/contacts/{contactId} Update a contact #
PATCH /accounts/{id}/contacts/{contactId} Partially update a contact #
DELETE /accounts/{id}/contacts/{contactId} Remove a contact from an organization account #
GET /accounts/{id}/donations List an account's donations #
GET /accounts/{id}/pledges List an account's pledges #
POST /addresses Add an address to an account #
GET /addresses/{addressId} Retrieve an address #
PUT /addresses/{addressId} Update an address #
PATCH /addresses/{addressId} Partially update an address #
DELETE /addresses/{addressId} Remove an address #

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/neonone-accounts-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

neonone-accounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Neon CRM API v2 Accounts API
  description: Neon CRM API v2 is a RESTful, JSON-based rebuild of Neon One's legacy API v1, first launched in 2019.
  version: '2.11'
  contact:
    name: Neon One Developer Center
    url: https://developer.neoncrm.com/
  license:
    name: Proprietary
    url: https://neonone.com/
servers:
- url: https://api.neoncrm.com/v2
  description: Production and Sandbox
- url: https://trial.z2systems.com/v2
  description: Trial instances
security:
- basicAuth: []
tags:
- name: Accounts
  description: Individual and organization constituent records, contacts, and addresses.
paths:
  /accounts:
    get:
      operationId: listAccounts
      tags:
      - Accounts
      summary: List accounts
      description: Retrieves accounts in bulk, functioning similarly to the v1 keyword search. Added in API v2.3.
      parameters:
      - $ref: '#/components/parameters/CurrentPage'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: A page of accounts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createAccount
      tags:
      - Accounts
      summary: Create an account
      description: Creates a new individual or company account.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountInput'
      responses:
        '200':
          description: The created account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /accounts/{id}:
    parameters:
    - $ref: '#/components/parameters/AccountId'
    get:
      operationId: getAccount
      tags:
      - Accounts
      summary: Retrieve an account
      description: Retrieves an individual or organization account by ID. Returns 222 Merged Account if the account was merged into another.
      responses:
        '200':
          description: The requested account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '222':
          description: The account has been merged into another account.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateAccount
      tags:
      - Accounts
      summary: Update an account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountInput'
      responses:
        '200':
          description: The updated account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /accounts/search:
    post:
      operationId: searchAccounts
      tags:
      - Accounts
      summary: Search accounts
      description: Advanced search over accounts using searchFields and outputFields. Rate-limited to 1 simultaneous request.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Matching accounts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /accounts/search/searchFields:
    get:
      operationId: listAccountSearchFields
      tags:
      - Accounts
      summary: List account search fields
      responses:
        '200':
          description: Fields usable as accounts/search criteria.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
  /accounts/search/outputFields:
    get:
      operationId: listAccountOutputFields
      tags:
      - Accounts
      summary: List account output fields
      responses:
        '200':
          description: Fields returnable from accounts/search.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
  /accounts/link:
    post:
      operationId: linkAccounts
      tags:
      - Accounts
      summary: Link two accounts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Link result.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /accounts/unlink:
    post:
      operationId: unlinkAccounts
      tags:
      - Accounts
      summary: Unlink two previously merged accounts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Unlink result.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /accounts/{id}/contacts:
    parameters:
    - $ref: '#/components/parameters/AccountId'
    get:
      operationId: listAccountContacts
      tags:
      - Accounts
      summary: List contacts on an organization account
      responses:
        '200':
          description: A list of contacts.
          content:
            application/json:
              schema:
                type: object
                properties:
                  contacts:
                    type: array
                    items:
                      $ref: '#/components/schemas/Contact'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: addAccountContact
      tags:
      - Accounts
      summary: Add a contact to an organization account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Contact'
      responses:
        '200':
          description: The created contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /accounts/{id}/contacts/{contactId}:
    parameters:
    - $ref: '#/components/parameters/AccountId'
    - name: contactId
      in: path
      required: true
      description: The ID of the contact.
      schema:
        type: string
    get:
      operationId: getAccountContact
      tags:
      - Accounts
      summary: Retrieve a contact
      responses:
        '200':
          description: The requested contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateAccountContact
      tags:
      - Accounts
      summary: Update a contact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Contact'
      responses:
        '200':
          description: The updated contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: patchAccountContact
      tags:
      - Accounts
      summary: Partially update a contact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The updated contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteAccountContact
      tags:
      - Accounts
      summary: Remove a contact from an organization account
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /accounts/{id}/donations:
    parameters:
    - $ref: '#/components/parameters/AccountId'
    get:
      operationId: listAccountDonations
      tags:
      - Accounts
      summary: List an account's donations
      responses:
        '200':
          description: A list of donations for the account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  donations:
                    type: array
                    items:
                      $ref: '#/components/schemas/Donation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /accounts/{id}/pledges:
    parameters:
    - $ref: '#/components/parameters/AccountId'
    get:
      operationId: listAccountPledges
      tags:
      - Accounts
      summary: List an account's pledges
      description: Includes the pledgeStatus (open or closed) field added in API v2.11.
      responses:
        '200':
          description: A list of pledges for the account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pledges:
                    type: array
                    items:
                      $ref: '#/components/schemas/Pledge'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /addresses:
    post:
      operationId: createAddress
      tags:
      - Accounts
      summary: Add an address to an account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Address'
      responses:
        '200':
          description: The created address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Address'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /addresses/{addressId}:
    parameters:
    - name: addressId
      in: path
      required: true
      description: The ID of the address.
      schema:
        type: string
    get:
      operationId: getAddress
      tags:
      - Accounts
      summary: Retrieve an address
      responses:
        '200':
          description: The requested address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Address'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateAddress
      tags:
      - Accounts
      summary: Update an address
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Address'
      responses:
        '200':
          description: The updated address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Address'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: patchAddress
      tags:
      - Accounts
      summary: Partially update an address
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The updated address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Address'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteAddress
      tags:
      - Accounts
      summary: Remove an address
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Pledge:
      allOf:
      - $ref: '#/components/schemas/PledgeInput'
      - type: object
        properties:
          id:
            type: string
          pledgeStatus:
            type: string
            enum:
            - open
            - closed
    Donation:
      allOf:
      - $ref: '#/components/schemas/DonationInput'
      - type: object
        properties:
          id:
            type: string
          batchNumber:
            type: string
          publicRecognitionName:
            type: string
    Error:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
    AccountInput:
      type: object
      properties:
        individualAccount:
          type: object
          additionalProperties: true
        companyAccount:
          type: object
          additionalProperties: true
      additionalProperties: true
    AccountListResponse:
      type: object
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/Account'
        pagination:
          type: object
          additionalProperties: true
    PledgeInput:
      type: object
      required:
      - accountId
      - amount
      properties:
        accountId:
          type: string
        amount:
          type: number
          format: float
        matchedDonationId:
          type: string
        expectedDate:
          type: string
          format: date
      additionalProperties: true
    Account:
      allOf:
      - $ref: '#/components/schemas/AccountInput'
      - type: object
        properties:
          accountId:
            type: string
          accountCustomFields:
            type: array
            items:
              type: object
              additionalProperties: true
    Address:
      type: object
      properties:
        addressId:
          type: string
        accountId:
          type: string
        addressLine1:
          type: string
        addressLine2:
          type: string
        city:
          type: string
        stateProvince:
          type: object
          additionalProperties: true
        zipCode:
          type: string
        country:
          type: object
          additionalProperties: true
        isPrimaryAddress:
          type: boolean
      additionalProperties: true
    DonationInput:
      type: object
      required:
      - accountId
      - amount
      properties:
        accountId:
          type: string
        amount:
          type: number
          format: float
        campaign:
          type: object
          additionalProperties: true
        fund:
          type: object
          additionalProperties: true
        purpose:
          type: object
          additionalProperties: true
        tribute:
          type: object
          additionalProperties: true
        solicitor:
          type: array
          items:
            type: object
            properties:
              accountId:
                type: string
              solicitorName:
                type: string
      additionalProperties: true
    SearchRequest:
      type: object
      required:
      - searchFields
      - outputFields
      properties:
        searchFields:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              operator:
                type: string
              value:
                type: string
        outputFields:
          type: array
          items:
            type: string
        pagination:
          type: object
          properties:
            currentPage:
              type: integer
            pageSize:
              type: integer
    Contact:
      type: object
      properties:
        contactId:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email1:
          type: string
      additionalProperties: true
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: The rate limit for simultaneous requests to this endpoint was exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The authenticated API user lacks the permission required for this request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid Org ID / API key in the Basic Authorization header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    AccountId:
      name: id
      in: path
      required: true
      description: The ID of the account.
      schema:
        type: string
    CurrentPage:
      name: currentPage
      in: query
      required: false
      description: Zero-indexed page number to retrieve.
      schema:
        type: integer
        default: 0
    PageSize:
      name: pageSize
      in: query
      required: false
      description: Number of results per page.
      schema:
        type: integer
        default: 50
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Authentication. Username is the Neon CRM organization's Org ID; password is an API key generated for a system user under Settings > User Management.