iContact · Authentication Profile

Icontact Authentication

Authentication

iContact declares 1 security scheme(s) across its OpenAPI definitions.

Email MarketingMarketing AutomationCampaignsContactsListSegmentsWebhookEmail DeliverabilitySMB
Methods: Schemes: 1 OAuth flows: API key in:

Security Schemes

apiKey
· in: header ()

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: https://help.icontact.com/customers/s/article/API-Getting-Started-Guide
docs: https://help.icontact.com/customers/s/article/API-Getting-Started-Guide
name: iContact REST API authentication
api: icontact:rest-api
base_url: https://app.icontact.com/icp
summary: >-
  iContact authenticates every request with three custom HTTP request headers
  issued per registered application, not with OAuth, Basic auth or a bearer
  token. There is no authorization server, no token exchange, no scopes and no
  refresh; the same three long-lived header values are sent on every call. A
  fourth header, API-Version, selects the API contract version and is also
  required.
transport:
  https_required: true
  https_note: >-
    The Getting Started guide states "Every request must be sent over HTTPS."
    Probed 2026-08-13: https://app.icontact.com/icp/time returns
    strict-transport-security: max-age=15552000; includeSubDomains.
schemes:
  - id: api-app-headers
    type: apiKey
    in: header
    style: custom-multi-header
    headers:
      - name: API-AppId
        required: true
        description: >-
          Uniquely identifies the registered API application. Issued when the
          integration is created under Settings and Billing > iContact
          Integrations > Custom API Integrations. A third-party application
          distributes its own API-AppId, which the account owner must enable at
          https://app.icontact.com/icp/core/externallogin before use.
      - name: API-Username
        required: true
        description: The iContact account username used to log in to iContact.
      - name: API-Password
        required: true
        description: >-
          The API application password set when the application was registered.
          The docs state explicitly that this is NOT the iContact login
          password, and recommend it differ from the account password.
      - name: API-Version
        required: true
        description: >-
          Selects the API contract version. Documented accepted values are
          2.0, 2.1 and 2.2. The first-party PHP libraries default to 2.2.
        values: ['2.0', '2.1', '2.2']
    rotation: >-
      Not documented. The docs describe setting the application password at
      registration time and say nothing about rotation, expiry or revocation.
    scopes: null
    scopes_note: >-
      No scope or permission scoping exists on the credential itself.
      Authorization is account-level; see the permissions resource
      (https://help.icontact.com/customers/s/article/Permissions-iContact-API),
      which grants a USER read/write access per client folder — it does not
      constrain an API application.
content_negotiation:
  headers: [Accept, Content-Type]
  values: [application/json, text/xml]
  note: >-
    The API returns 406 Not Acceptable for any other requested representation
    and 415 Unsupported Media Type for any other request body format.
unauthenticated_surface:
  - path: /icp/time
    method: GET
    description: >-
      The time resource is documented as publicly accessible and is the only
      documented exception to "every request must be authenticated".
    probed: '2026-08-13'
    url: https://app.icontact.com/icp/time
    http_status: 200
    response: '{"time":"2026-08-13T13:30:19-04:00","timestamp":1786642219}'
failure_behavior:
  status: 401
  body: '{"errors":["Api username invalid"]}'
  probed: '2026-08-13'
  probed_url: https://app.icontact.com/icp/a/
  note: >-
    Probed anonymously and with placeholder credentials; both return HTTP 401
    with the same custom error envelope. No WWW-Authenticate header is sent.
account_scoping:
  required_path_ids: [accountId, clientFolderId]
  note: >-
    Almost every resource URI is namespaced /a/{accountId}/c/{clientFolderId}/…
    Both identifiers are read from the iContact UI (Settings and Billing >
    iContact Integrations > View Details > Account Information), or discovered
    at runtime by calling GET /a/ then GET /a/{accountId}/c/.
not_supported:
  oauth2: false
  openid_connect: false
  mutual_tls: false
  bearer_token: false
  hmac_request_signing: false
gaps:
  - No OAuth 2.0 or OpenID Connect, so no delegated third-party authorization.
  - No scopes; a credential that can read contacts can also delete them.
  - No documented credential rotation, expiry or revocation procedure.
  - Credentials travel as three separate custom headers on every request.

Work with this as data

Every security artifact 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 security posture

4 MCP tools reach this
  • find_securityBrowse and filter every security artifact in the catalog.
  • 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 security artifact
curl "https://apis.io/api/v1/security/icontact-authentication"
All security posture
curl "https://apis.io/api/v1/security?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.