SharpSpring · Authentication Profile

Sharpspring Authentication

Authentication

SharpSpring secures its APIs with apiKey across 2 declared security schemes, as derived from its OpenAPI definitions.

CompanyMarketingMarketing AutomationCRMEmail MarketingSalesLeadsCampaignsAutomationSaaS
Methods: apiKey Schemes: 2 OAuth flows: API key in: query, header

Security Schemes

accountID + secretKey (query string) apiKey
· in: query ()
X-Account-Id + Authorization bearer apiKey
· in: header ()

Source

Authentication Profile

sharpspring-authentication.yml Raw ↑
generated: '2026-08-12'
method: searched
source: https://knowledgebase.constantcontact.com/lead-gen-crm/articles/KnowledgeBase/50374-Understanding-Lead-Gen--CRM-Open-API-Overview?lang=en_US
docs: https://knowledgebase.constantcontact.com/lead-gen-crm/articles/KnowledgeBase/50374-Understanding-Lead-Gen--CRM-Open-API-Overview?lang=en_US
note: >-
  Derived from the published Open API overview rather than from an OpenAPI document — SharpSpring
  publishes no machine-readable description, so there are no securitySchemes to aggregate. The API
  uses a single static credential pair (account ID + secret key) generated by an account administrator
  in the application under Settings > SharpSpring API > API Settings. There is no OAuth, no OpenID
  Connect, no scopes, no per-user credentials, and no documented rotation or expiry.
summary:
  types: [apiKey]
  api_key_in: [query, header]
  oauth2_flows: []
  scopes_supported: false
  mtls: false
schemes:
- name: accountID + secretKey (query string)
  type: apiKey
  in: query
  parameters: [accountID, secretKey]
  description: >-
    Both credentials are appended to the endpoint URL, e.g.
    https://api.sharpspring.com/pubapi/v1.2/?accountID={accountID}&secretKey={secretKey}.
    This is the form the provider's own example code uses.
  precedence: >-
    The documentation states that query-string parameters take precedence over the header form when
    both are supplied.
  source: docs
- name: X-Account-Id + Authorization bearer
  type: apiKey
  in: header
  parameters: [X-Account-Id, Authorization]
  description: >-
    The account ID travels in the X-Account-Id header and the secret key is presented as an
    Authorization bearer token. This is a bearer-shaped carrier for the same static secret — it is
    not an OAuth access token and it does not expire.
  source: docs
credential_management:
  issued_by: account administrator, in-application
  location: Settings > SharpSpring API > API Settings
  rotation_documented: false
  expiry: none documented
  revocation_documented: false
  per_user_credentials: false
  scopes: none — a credential is all-or-nothing across the account's data
failure_modes:
- observed: 'HTTP 401 with body "Unable to determine clusterID from provided accountID/secretKey"'
  probe: https://api.sharpspring.com/pubapi/v1.2/
  note: >-
    Observed anonymously on 2026-08-12. The endpoint also sets
    WWW-Authenticate: Basic realm="SharpSpring" on an unauthenticated POST, which is a Basic-auth
    challenge the documented credential model does not actually use.
- documented_error: 103
  message: Header missing `account ID`.
- documented_error: 104
  message: Header missing `Secret Key`.
- documented_error: 105
  message: User authentication failed.
transport:
  https_required: true
  hsts: true
  observed_tls: TLSv1.3
x-evidence:
  fetched: '2026-08-12'
  probes:
  - url: https://api.sharpspring.com/pubapi/v1.2/
    status: 401
  - url: https://api.sharpspring.com/pubapi/v1/
    status: 401
  - url: https://knowledgebase.constantcontact.com/lead-gen-crm/articles/KnowledgeBase/50374-Understanding-Lead-Gen--CRM-Open-API-Overview?lang=en_US
    status: 200