Sequenzy Account API

The Account API from Sequenzy — 5 operation(s) for account.

Operations 7

GET /account Get account #
GET /api-keys List API keys #
POST /api-keys Create API key #
POST /api-key-handoff Request API key handoff #
PATCH /api-keys/{apiKeyId} Update API key #
DELETE /api-keys/{apiKeyId} Revoke API key #
POST /integration-guide Get integration guide #

Specifications

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/sequenzy:sequenzy-account-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

sequenzy-account-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sequenzy Account API
  description: Sequenzy API for managing subscribers, tags, events, sequences, and transactional emails
  version: 1.0.0
servers:
- url: https://api.sequenzy.com/api/v1
  description: Production server
- url: https://api.sequenzy.com/v1
  description: Legacy production server alias
security:
- bearerAuth: []
tags:
- name: Account
paths:
  /account:
    get:
      operationId: getAccount
      summary: Get account
      description: Returns the companies available to the authenticated API key, the currently selected company, and a read-only summary of the key's own permissions.
      tags:
      - Account
      responses:
        '200':
          description: Account context returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  user:
                    type: object
                    properties:
                      id:
                        type: string
                        example: user_abc123
                  companies:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        role:
                          type: string
                          description: Account-key access role. Viewer access remains read-only regardless of key scopes; marketer access is limited to marketing scopes (no transactional, settings, integration, webhook, team, or API-key scopes).
                          enum:
                          - owner
                          - admin
                          - marketer
                          - viewer
                  currentCompanyId:
                    type:
                    - string
                    - 'null'
                  apiKeyPermissions:
                    type: object
                    description: Read-only identity and permission metadata for the authenticated key, including a recovery URL. This does not bypass resource scopes.
                    properties:
                      activeKey:
                        type: object
                        description: Non-secret identity of the bearer key that authenticated this request. Use it to verify that a restarted client loaded the intended replacement key.
                        properties:
                          id:
                            type: string
                          name:
                            type:
                            - string
                            - 'null'
                          prefix:
                            type:
                            - string
                            - 'null'
                            description: Stored non-secret key prefix, such as seq_live_A or seq_user_B. Pair it with the key name and ID when verifying a replacement credential.
                          type:
                            type:
                            - string
                            - 'null'
                            enum:
                            - company
                            - personal
                            - null
                      preset:
                        type: string
                        enum:
                        - full_access
                        - read_only
                        - agent_safe
                        - ai_drafting
                        - data_ingest_safe
                        - data_ingest_automations
                        - transactional_sender
                        - marketing_sender
                        - custom
                      fullAccess:
                        type: boolean
                      selectedScopeCount:
                        type: integer
                        description: Number of currently defined scopes enabled for the key. For full-access keys this equals currentScopeCount, while fullAccess still indicates future-scope access.
                      currentScopeCount:
                        type: integer
                        description: Total number of permission scopes defined when the response was generated.
                      description:
                        type: string
                        description: Human-readable explanation of the effective permission selection.
                      scopes:
                        type:
                        - array
                        - 'null'
                        items:
                          type: string
                      canDiscoverMarketingWork:
                        type: boolean
                        description: Whether the key can read campaigns, sequences, and landing pages.
                      missingMarketingReadScopes:
                        type: array
                        items:
                          type: string
                      canSendLive:
                        type: boolean
                        description: Whether the key holds any scope that delivers to a real person. False for drafting-only keys, which can create and update content but cannot send it.
                      missingLiveDeliveryScopes:
                        type: array
                        description: Live-delivery scopes the key does not hold, such as transactional:send for one-to-one sends or campaigns:send for campaigns. Drafting permission such as transactional:write does not imply delivery.
                        items:
                          type: string
                      liveDeliveryBlockedByRole:
                        type: boolean
                        description: Whether the authenticated user's role in the selected workspace blocks every kind of sending regardless of key scopes. Personal keys held by a viewer are read-only, so widening the key's permissions does not enable delivery; the role has to change. A marketer is not blocked here because they can still send campaigns; their transactional restriction is listed in roleRestrictedScopes.
                      roleRestrictedScopes:
                        type: array
                        description: Scopes the authenticated user's workspace role cannot use through a personal key, such as transactional:send or team:manage for a marketer. Empty for owners, admins, and company keys.
                        items:
                          type: string
                      manageUrl:
                        type:
                        - string
                        - 'null'
                        format: uri
                        description: Direct management URL for the authenticated key. Personal keys open Account API Keys; company keys open the selected workspace's API Keys settings.
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          $ref: '#/components/responses/TransientDatabaseUnavailable'
  /api-keys:
    get:
      operationId: listApiKeys
      summary: List API keys
      description: Lists company-scoped API keys as non-secret metadata. The caller must have the `api_keys:manage` permission. Account-scoped keys select the company with the x-company-id header. Plain key values and stored hashes are never returned.
      tags:
      - Account
      responses:
        '200':
          description: API key metadata
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  apiKeys:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiKeyMetadata'
                required:
                - success
                - apiKeys
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing required API key management permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          $ref: '#/components/responses/TransientDatabaseUnavailable'
    post:
      operationId: createApiKey
      summary: Create API key
      description: Creates a company-scoped API key. The caller must have the `api_keys:manage` permission. Account-scoped keys select the target company with the x-company-id header; companyId in the JSON body is not a supported selector. The plain key is returned only once.
      tags:
      - Account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                name:
                  type: string
                  description: Human-readable key name.
                preset:
                  type: string
                  description: Permission preset to apply when scopes is omitted. Defaults to full_access. Full-access keys are stored with scopes set to null, meaning all current and future permissions.
                  enum:
                  - full_access
                  - read_only
                  - agent_safe
                  - ai_drafting
                  - data_ingest_safe
                  - data_ingest_automations
                  - transactional_sender
                  - marketing_sender
                scopes:
                  type: array
                  description: Explicit permission scopes for the new key. Overrides preset when provided.
                  minItems: 1
                  items:
                    type: string
      responses:
        '200':
          description: API key created
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  apiKey:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      key:
                        type: string
                        description: Plain API key. This is shown only on creation.
                      prefix:
                        type: string
                      scopes:
                        type:
                        - array
                        - 'null'
                        description: Explicit permission scopes, or null for full access.
                        items:
                          type: string
                      permissions:
                        type: object
                        description: Effective permission receipt for the newly created key. Only scopes set to null grant current and future full access.
                        properties:
                          preset:
                            type: string
                            description: Effective preset derived from the stored scopes. An explicit all-current-scopes array is custom, not full_access.
                          fullAccess:
                            type: boolean
                          selectedScopeCount:
                            type: integer
                          currentScopeCount:
                            type: integer
                          description:
                            type: string
                      createdAt:
                        type: string
                        format: date-time
                  message:
                    type: string
                  instructions:
                    type: object
                    additionalProperties: true
        '400':
          description: Invalid permission preset or scope list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing required API key management permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: API key could not be created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api-key-handoff:
    post:
      operationId: requestApiKeyHandoff
      summary: Request API key handoff
      description: Builds a dashboard link that opens the create-key form prefilled with a suggested name and permissions. Requires only `account:read`, because it creates nothing, changes nothing, and returns no secret - the new key is issued in the owner's authenticated browser session. Use it when key management is blocked because the calling key lacks `api_keys:manage`, which cannot be granted through the API by the key that is missing it. Pass replaceApiKeyId to rotate; the dashboard then offers to revoke the predecessor once the replacement exists.
      tags:
      - Account
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                name:
                  type: string
                  description: Suggested name for the new key. Trimmed to 80 characters in the link.
                preset:
                  type: string
                  description: Suggested permission preset.
                  enum:
                  - full_access
                  - read_only
                  - agent_safe
                  - ai_drafting
                  - data_ingest_safe
                  - data_ingest_automations
                  - transactional_sender
                  - marketing_sender
                scopes:
                  type: array
                  description: Suggested explicit permission scopes. Overrides preset when provided.
                  minItems: 1
                  items:
                    type: string
                replaceApiKeyId:
                  type: string
                  description: ID of the key the new one replaces. Pass the literal string "current" for the key making the request.
      responses:
        '200':
          description: Handoff link prepared
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  handoff:
                    type: object
                    properties:
                      url:
                        type: string
                        description: Dashboard URL that opens the create-key form prefilled with the request.
                      manageUrl:
                        type: string
                        description: The plain API Keys settings URL, without the prefill.
                      keyType:
                        type: string
                        description: Whether the link targets workspace or account API key settings.
                        enum:
                        - company
                        - personal
                      name:
                        type:
                        - string
                        - 'null'
                      preset:
                        type:
                        - string
                        - 'null'
                      scopes:
                        type:
                        - array
                        - 'null'
                        items:
                          type: string
                      permissions:
                        type:
                        - object
                        - 'null'
                        description: Permission receipt for the suggested selection. Null when the request suggested no preset and no scopes, because the form then opens on the dashboard default.
                        additionalProperties: true
                      replaces:
                        type:
                        - object
                        - 'null'
                        description: The key being replaced. name and prefix are populated only when it is the key making the request.
                        properties:
                          id:
                            type: string
                          name:
                            type:
                            - string
                            - 'null'
                          prefix:
                            type:
                            - string
                            - 'null'
                          isCurrentKey:
                            type: boolean
                      canSelfServe:
                        type: boolean
                        description: True when the calling key already holds api_keys:manage and could create the replacement directly.
                      deliversKeyToCaller:
                        type: boolean
                        description: Always false. The new key is shown in the browser and never returned through this endpoint.
                  message:
                    type: string
                  nextSteps:
                    type: array
                    items:
                      type: string
                required:
                - success
                - handoff
        '400':
          description: Invalid permission preset, scope list, or replaceApiKeyId
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing required account read permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api-keys/{apiKeyId}:
    patch:
      operationId: updateApiKey
      summary: Update API key
      description: Renames a company-scoped API key and/or replaces its permissions in place. The caller must have the `api_keys:manage` permission. The key value is unchanged. Added permissions apply on the next retry; removed permissions may remain usable for up to five minutes while API caches expire. `preset` and `scopes` replace the whole selection rather than merging into it. The response contains non-secret metadata only.
      tags:
      - Account
      parameters:
      - name: apiKeyId
        in: path
        required: true
        description: Exact API key ID returned by the list API keys endpoint.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              description: Provide at least one of name, preset, or scopes.
              properties:
                name:
                  type: string
                  description: New human-readable key name.
                preset:
                  type: string
                  description: Replacement permission preset. Full-access keys are stored with scopes set to null, meaning all current and future permissions.
                  enum:
                  - full_access
                  - read_only
                  - agent_safe
                  - ai_drafting
                  - data_ingest_safe
                  - data_ingest_automations
                  - transactional_sender
                  - marketing_sender
                scopes:
                  type: array
                  description: Replacement explicit permission scopes. Overrides preset when provided.
                  minItems: 1
                  items:
                    type: string
      responses:
        '200':
          description: API key updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  apiKey:
                    $ref: '#/components/schemas/ApiKeyMetadata'
                  message:
                    type: string
                    example: API key permissions updated. Added permissions apply on the next retry; removed permissions may take up to five minutes to expire across API instances.
                required:
                - success
                - apiKey
                - message
        '400':
          description: Nothing to update, or an invalid permission preset or scope list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing required API key management permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: API key not found for the selected company
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: revokeApiKey
      summary: Revoke API key
      description: Permanently revokes a company-scoped API key. The caller must have the `api_keys:manage` permission. The response contains non-secret metadata only.
      tags:
      - Account
      parameters:
      - name: apiKeyId
        in: path
        required: true
        description: Exact API key ID returned by the list API keys endpoint.
        schema:
          type: string
      responses:
        '200':
          description: API key revoked
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  apiKey:
                    $ref: '#/components/schemas/ApiKeyMetadata'
                  message:
                    type: string
                    example: API key revoked successfully.
                required:
                - success
                - apiKey
                - message
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing required API key management permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: API key not found for the selected company
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          $ref: '#/components/responses/TransientDatabaseUnavailable'
  /integration-guide:
    post:
      operationId: getIntegrationGuide
      summary: Get integration guide
      description: Returns a framework-specific code example and implementation tip for common integration use cases.
      tags:
      - Account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                framework:
                  type: string
                  example: nextjs
                use_case:
                  type: string
                  example: transactional
      responses:
        '200':
          description: Integration guide returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  framework:
                    type: string
                  use_case:
                    type: string
                  code:
                    type: string
                  tip:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  headers:
    RetryAfter:
      description: Number of seconds to wait before retrying the request.
      schema:
        type: integer
        minimum: 1
        example: 1
  responses:
    TransientDatabaseUnavailable:
      description: The database was temporarily unavailable. The request may be retried after the delay in Retry-After.
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            error: The service could not reach its database for a moment. Retry the request.
            code: SERVICE_UNAVAILABLE
  schemas:
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Error message
        code:
          type: string
          description: Optional stable machine-readable error discriminator when available.
          example: COMPANY_CREATE_REQUIRES_PERSONAL_KEY
        retryable:
          type: boolean
          description: Whether retrying the request can recover from the error.
        issues:
          type: array
          description: Field-level problems with the request, when the endpoint reports them. Up to ten entries; `error` summarizes the first three.
          items:
            $ref: '#/components/schemas/InputIssue'
      required:
      - error
    InputIssue:
      type: object
      properties:
        path:
          type: string
          description: Dotted field path, such as `audience.subscriberIds[0]`. Empty when the problem is with the request body itself.
          example: kind
        message:
          type: string
          description: What is wrong with the field.
          example: must be "add_tags"
        allowedValues:
          type: array
          description: Accepted values when the field only takes a fixed set of values.
          items: {}
          example:
          - add_tags
      required:
      - path
      - message
    ApiKeyMetadata:
      type: object
      description: Non-secret metadata for a company-scoped API key. Plain key values and stored hashes are never returned.
      additionalProperties: false
      properties:
        id:
          type: string
        name:
          type: string
        prefix:
          type: string
          description: Non-secret key prefix for identifying the credential.
        type:
          type: string
          enum:
          - company
        scopes:
          type:
          - array
          - 'null'
          description: Explicit permission scopes, or null for full access.
          items:
            type: string
        permissions:
          type: object
          description: Effective permission receipt for the key.
          additionalProperties: true
        deviceName:
          type:
          - string
          - 'null'
        lastUsedAt:
          type:
          - string
          - 'null'
          format: date-time
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        isCurrent:
          type: boolean
          description: Whether this is the credential authenticating the request.
      required:
      - id
      - name
      - prefix
      - type
      - scopes
      - permissions
      - deviceName
      - lastUsedAt
      - createdAt
      - updatedAt
      - isCurrent
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key passed as Bearer token