FinanceGenius.AI CRM attribution API

The CRM attribution API from FinanceGenius.AI — 7 operation(s) for crm attribution.

GitHub OpenAPI

Operations 7

POST /api/v1/crm/attribution/consent Post Consent #
POST /api/v1/crm/attribution/touch Post Touch #
POST /api/v1/crm/attribution/go/{code}/click Post Go Click #
POST /api/v1/crm/attribution/stitch Post Stitch #
POST /api/v1/crm/attribution/links Post Link #
GET /api/v1/crm/attribution/health Get Health #

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/financegenius-ai:financegenius-ai-crm-attribution-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

financegenius-ai-crm-attribution-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Financegenius Ai CRM attribution API
  version: 1.0.0
  description: 'Operations tagged CRM attribution across 2 of this provider''s published API definitions: finmall-openapi.json, financegenius-ai-openapi.json. Each path carries the servers of the definition it was published in.'
tags:
- name: CRM attribution
paths:
  /api/v1/crm/attribution/notice:
    get:
      tags:
      - CRM attribution
      summary: Get Cookie Notice
      description: Public. The notice text as the ledger hashes it (the banner ships the same text).
      operationId: get_cookie_notice_api_v1_crm_attribution_notice_get
      parameters:
      - name: language
        in: query
        required: false
        schema:
          type: string
          maxLength: 12
          default: en
          title: Language
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/attribution/consent:
    post:
      tags:
      - CRM attribution
      summary: Post Consent
      description: Public. Record the analytics choice; a grant returns the visitor id and token for this browser only.
      operationId: post_consent_api_v1_crm_attribution_consent_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsentIn'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/attribution/touch:
    post:
      tags:
      - CRM attribution
      summary: Post Touch
      description: Public. One landing. JSON or text/plain (a beacon). The answer says only how it was stored.
      operationId: post_touch_api_v1_crm_attribution_touch_post
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/crm/attribution/go/{code}/click:
    post:
      tags:
      - CRM attribution
      summary: Post Go Click
      description: Public; the finmall.ai middleware's call. Where to send the browser, after recording the click.
      operationId: post_go_click_api_v1_crm_attribution_go__code__click_post
      parameters:
      - name: code
        in: path
        required: true
        schema:
          type: string
          title: Code
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClickIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/attribution/stitch:
    post:
      tags:
      - CRM attribution
      summary: Post Stitch
      description: 'Right after OTP sign-in. A quick-login session (no amr=otp) is refused: it never merges.'
      operationId: post_stitch_api_v1_crm_attribution_stitch_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StitchIn'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/v1/crm/attribution/links:
    post:
      tags:
      - CRM attribution
      summary: Post Link
      description: 'Staff: mint a campaign link to a page of ours. Message, referral and lender links have their own flows.'
      operationId: post_link_api_v1_crm_attribution_links_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/app__api__v1__crm_attribution__LinkIn'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/attribution/health:
    get:
      tags:
      - CRM attribution
      summary: Get Health
      description: 'Staff: the attribution-health box and the channel table of the $10K channel-test screen.'
      operationId: get_health_api_v1_crm_attribution_health_get
      parameters:
      - name: start
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Start
      - name: end
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: End
      - name: group_by
        in: query
        required: false
        schema:
          enum:
          - channel
          - utm_campaign
          type: string
          default: channel
          title: Group By
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    StitchIn:
      properties:
        visitor_id:
          anyOf:
          - type: string
            maxLength: 40
          - type: 'null'
          title: Visitor Id
        visitor_token:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Visitor Token
        pending:
          anyOf:
          - $ref: '#/components/schemas/PendingIn'
          - type: 'null'
      additionalProperties: false
      type: object
      title: StitchIn
    app__api__v1__crm_attribution__LinkIn:
      properties:
        kind:
          type: string
          enum:
          - in_app_view
          - content
          title: Kind
        destination_path:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Destination Path
        campaign_ref:
          anyOf:
          - type: string
          - type: 'null'
          title: Campaign Ref
        template_ref:
          anyOf:
          - type: string
          - type: 'null'
          title: Template Ref
        utm:
          additionalProperties:
            type: string
          propertyNames:
            enum:
            - utm_source
            - utm_medium
            - utm_campaign
            - utm_content
          type: object
          title: Utm
      additionalProperties: false
      type: object
      required:
      - kind
      title: LinkIn
      description: 'A campaign link minted on the channel-test screen: a page of ours, never a lender.


        Lender redirects are not offered here (review defect 11): a link that

        sends people straight to one lender, outside the hub''s issue_redirect

        (share consent, application.pushed, the enquiry budget), would make a

        single-lender campaign possible and steer before selection. They come

        only from the customer''s own hand-off (crm_lenders issue_redirect), so a

        lender_redirect kind or a lender_code answers 422.'
    ClickIn:
      properties:
        visitor_id:
          anyOf:
          - type: string
            maxLength: 40
          - type: 'null'
          title: Visitor Id
        visitor_token:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Visitor Token
        consent:
          type: string
          enum:
          - granted
          - declined
          - unset
          title: Consent
          default: unset
        bot:
          type: boolean
          title: Bot
          default: false
      additionalProperties: false
      type: object
      title: ClickIn
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ConsentIn:
      properties:
        choice:
          type: string
          enum:
          - granted
          - declined
          title: Choice
        language:
          type: string
          maxLength: 12
          title: Language
          default: en
        shown_sha256:
          anyOf:
          - type: string
            pattern: ^[0-9a-f]{64}$
          - type: 'null'
          title: Shown Sha256
        visitor_id:
          anyOf:
          - type: string
            maxLength: 40
          - type: 'null'
          title: Visitor Id
        visitor_token:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Visitor Token
        initiated_by:
          type: string
          enum:
          - finmall_prompt
          - customer
          title: Initiated By
          default: finmall_prompt
        ui_surface:
          type: string
          enum:
          - cookie-banner
          - cookie-settings
          title: Ui Surface
          default: cookie-banner
        surface:
          type: string
          enum:
          - web
          - app
          title: Surface
          default: web
      additionalProperties: false
      type: object
      required:
      - choice
      title: ConsentIn
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    PendingIn:
      properties:
        utm:
          additionalProperties:
            type: string
          propertyNames:
            enum:
            - utm_source
            - utm_medium
            - utm_campaign
            - utm_content
            - utm_term
          type: object
          title: Utm
        landing_path:
          anyOf:
          - type: string
            maxLength: 300
          - type: 'null'
          title: Landing Path
        referrer:
          anyOf:
          - type: string
            maxLength: 300
          - type: 'null'
          title: Referrer
        go_code:
          anyOf:
          - type: string
            maxLength: 20
          - type: 'null'
          title: Go Code
        referral_code:
          anyOf:
          - type: string
            maxLength: 24
          - type: 'null'
          title: Referral Code
        surface:
          type: string
          enum:
          - web
          - app
          title: Surface
          default: web
      additionalProperties: false
      type: object
      title: PendingIn
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
x-refined-from:
- finmall-openapi.json
- financegenius-ai-openapi.json
x-provenance:
  method: harvested
  publisher: FinanceGenius.AI
  source: https://api.finmall.ai/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)