Blng Journeys API

The Journeys API from Blng — 6 operation(s) for journeys.

Operations 8

GET /journeys Retrieve journeys or search for journeys based on criteria #
POST /journeys Start a new journey #
GET /journeys/versions Retrieve journeys by date since a specified timestamp #
POST /journeys/restore Restore multiple soft-deleted journeys in a single request #
GET /journeys/{journeyId} Retrieve a specific journey #
DELETE /journeys/{journeyId} Delete a specific journey #
POST /journeys/{journeyId}/restore Restore a soft-deleted journey #
PUT /design/journeys/{journeyId} Update a specific journey #

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/blng-journeys-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

blng-journeys-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Journeys API
  description: API to manage user journeys in shopping or design domains, including interactions like image uploads and prompt management.
  version: 2.0.0
servers:
- url: /v2
tags:
- name: Journeys
paths:
  /journeys:
    get:
      summary: Retrieve journeys or search for journeys based on criteria
      operationId: getJourneys
      tags:
      - Journeys
      parameters:
      - name: userId
        in: query
        required: true
        schema:
          type: string
        description: Unique identifier for the user whose journeys are being retrieved.
      - name: type
        in: query
        schema:
          type: string
          enum:
          - design
          - shopping
        description: Filter by the type of the journey.
      - name: pageSize
        in: query
        required: false
        schema:
          type: integer
          default: 10
          maximum: 100
        description: The number of journeys to return in a single page (default 10)
      - name: nextPageKey
        in: query
        required: false
        schema:
          type: string
        description: Token to retrieve the next set of journeys if paginating. Omit if retrieving the first page.
      - name: q
        in: query
        required: false
        schema:
          type: string
        description: 'Free-text search term to fuzzy-match against the specified journey fields.

          If provided, this routes through OpenSearch; otherwise DynamoDB paging is used.

          '
      - name: fields
        in: query
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
            enum:
            - specifics.name
        description: '**Required** when `q` is present: comma-separated list of fields to fuzzy-search on.

          Allowed values: [specifics.name].

          '
      - name: deleted
        in: query
        required: false
        description: When "true", returns only soft-deleted journeys (the recycle-bin view) for the caller's workspace. Requires pageSize and cannot be combined with q. Defaults to false (deleted journeys are excluded). Because deleted journeys are filtered after the page limit is applied, a page may contain fewer than pageSize items (or none) while more remain; clients should keep paging until nextPageKey is absent.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: A list of journeys, optionally filtered based on query parameters. Returns either a paginated response (when pageSize is provided) or an array of journeys (when pageSize is not provided).
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  description: Paginated response when pageSize parameter is provided
                  properties:
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/Journey'
                    nextPageKey:
                      type: string
                      description: Token to retrieve the next page of journeys, or empty if no further pages
                    totalCount:
                      type: number
                      description: Total number of journeys matching the query, counted across all DynamoDB pages (not just the first scan window). Returned on the first page only and omitted on subsequent pages (when a nextPageKey was supplied); clients should retain the first page's value while paging.
                - type: array
                  description: Array of journeys when pageSize parameter is not provided (for backward compatibility)
                  items:
                    $ref: '#/components/schemas/Journey'
        '400':
          description: Invalid request parameters
      security:
      - bearerAuth: []
      - cognitoUserAuth: []
    post:
      summary: Start a new journey
      operationId: startNewJourney
      tags:
      - Journeys
      requestBody:
        description: Data needed to initiate a new journey
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - userId
              - type
              properties:
                userId:
                  type: string
                  description: Unique identifier for the user
                type:
                  type: string
                  description: Type of the journey (design or shopping)
                  enum:
                  - design
                  - shopping
                id:
                  type: string
                  description: Optional unique identifier for the journey. If not provided, the server will generate one
      responses:
        '201':
          description: Journey successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Journey'
        '400':
          description: Invalid input data
      security:
      - bearerAuth: []
      - cognitoUserAuth: []
  /journeys/versions:
    get:
      summary: Retrieve journeys by date since a specified timestamp
      operationId: getJourneysByDate
      tags:
      - Journeys
      parameters:
      - name: userId
        in: query
        required: true
        schema:
          type: string
          description: Unique identifier for the user whose journeys are being retrieved.
      - name: since
        in: query
        required: true
        schema:
          type: string
          format: ISO 8601 date-time
          description: The starting date to filter journeys from, example - 2025-10-21T13:00:00Z.
      responses:
        '200':
          description: A list of journeys created or updated since the specified date.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Journey'
        '400':
          description: Invalid request parameters
  /journeys/restore:
    post:
      summary: Restore multiple soft-deleted journeys in a single request
      operationId: restoreJourneysBulk
      tags:
      - Journeys
      requestBody:
        description: List of journey IDs to restore (maximum 50 per request).
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - journeyIds
              properties:
                journeyIds:
                  type: array
                  minItems: 1
                  maxItems: 50
                  items:
                    type: string
                  description: Unique identifiers for the journeys to restore. Between 1 and 50 per request.
      responses:
        '200':
          description: Per-journey restore outcomes. Always returns 200 for a valid request; inspect each item's status for the outcome.
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        journeyId:
                          type: string
                          description: Unique identifier for the journey.
                        status:
                          type: string
                          enum:
                          - restored
                          - not_found
                          - forbidden
                          description: Outcome of the restore attempt for this journey.
        '400':
          description: Invalid request — journeyIds is missing, empty, contains a blank id, exceeds 50 entries, or the body is not valid JSON.
      security:
      - bearerAuth: []
      - cognitoUserAuth: []
  /journeys/{journeyId}:
    get:
      summary: Retrieve a specific journey
      operationId: getJourney
      tags:
      - Journeys
      parameters:
      - name: journeyId
        in: path
        required: true
        schema:
          type: string
          description: Unique identifier for the journey
      - in: header
        name: If-None-Match
        description: 'If provided, the server returns `304 Not Modified` when the resource''s

          current `ETag` matches this value. Use the `ETag` returned from a prior

          GET response as the value here for cheap revalidation.

          '
        required: false
        schema:
          type: string
          example: W/"1714564800000-r3"
      responses:
        '200':
          description: Journey record returned in full.
          headers:
            ETag:
              description: 'Weak entity tag for the returned journey, formatted as

                `W/"<updatedAt-millis>-r<revision>"` (or `W/"<updatedAt-millis>"`

                for legacy rows without a `revision` counter). Send this value

                back as `If-None-Match` on subsequent GETs for cheap

                revalidation.

                '
              schema:
                type: string
                example: W/"1714564800000-r3"
            Cache-Control:
              description: 'Always `private, no-cache, must-revalidate`. Clients may cache

                the body but MUST revalidate with the origin via

                `If-None-Match` before reuse; per-user, so not cacheable by

                shared intermediaries.

                '
              schema:
                type: string
                example: private, no-cache, must-revalidate
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Journey'
        '304':
          description: 'Returned when the request''s `If-None-Match` header matches the

            current ETag. Body is empty; clients should reuse their cached

            representation.

            '
          headers:
            ETag:
              description: 'Current ETag value, identical to the request''s

                `If-None-Match`.

                '
              schema:
                type: string
                example: W/"1714564800000-r3"
            Cache-Control:
              description: Always `private, no-cache, must-revalidate`.
              schema:
                type: string
                example: private, no-cache, must-revalidate
        '404':
          description: Journey not found
      security:
      - bearerAuth: []
      - cognitoUserAuth: []
    delete:
      summary: Delete a specific journey
      description: 'Soft-deletes (tombstones) a journey. Authorization follows the container-ownership model: within a shared workspace, deletion is governed by the caller''s workspace role (OWNER/ADMIN/EDITOR may delete any journey in the workspace, regardless of who created it; BILLING_ADMIN and VIEWER may not), never by creatorship. Journeys without a workspace context remain deletable only by their creator (legacy).'
      operationId: deleteJourney
      tags:
      - Journeys
      parameters:
      - name: journeyId
        in: path
        required: true
        schema:
          type: string
          description: Unique identifier for the journey to be deleted
      responses:
        '204':
          description: Journey successfully deleted
        '403':
          description: Delete not permitted — the caller's workspace role does not allow deletion, the caller is no longer a member of the journey's workspace, or the role could not be verified.
        '404':
          description: Journey not found
      security:
      - bearerAuth: []
      - cognitoUserAuth: []
  /journeys/{journeyId}/restore:
    post:
      summary: Restore a soft-deleted journey
      operationId: restoreJourney
      tags:
      - Journeys
      parameters:
      - name: journeyId
        in: path
        required: true
        schema:
          type: string
          description: Unique identifier for the journey to be restored
      responses:
        '200':
          description: Journey successfully restored.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Journey'
        '403':
          description: Restore not permitted — the caller is not the workspace owner, or workspace ownership could not be verified (e.g. the journey has no workspace context).
        '404':
          description: Journey not found, or not currently deleted.
      security:
      - bearerAuth: []
      - cognitoUserAuth: []
  /design/journeys/{journeyId}:
    put:
      summary: Update a specific journey
      operationId: updateJourney
      tags:
      - Journeys
      parameters:
      - name: journeyId
        in: path
        required: true
        schema:
          type: string
          description: Unique identifier for the journey to be updated
      requestBody:
        description: Data needed to update a journey
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Journey'
      responses:
        '200':
          description: Journey successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Journey'
        '204':
          description: No updates were made to the journey
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
        '400':
          description: Invalid input data
        '404':
          description: Journey not found
      security:
      - bearerAuth: []
      - cognitoUserAuth: []
components:
  schemas:
    JourneySpecifics:
      type: object
      properties:
        height:
          type: number
        historicImages:
          type: array
          deprecated: true
          description: List of image IDs that were generated from prompts, this property is deprecated and will be removed in the future
          items:
            type: string
        layers:
          type: array
          items:
            $ref: '#/components/schemas/Layer'
        name:
          type: string
        preview:
          type: string
        lastGenerateImageId:
          description: asset ID of the last generated image from a chat prompt, updated when a chat prompt result is processed
          type: string
        visibleCanvasImageId:
          description: asset ID of what the current canvas looks like (also called flattened), updated by clients when saving a layer
          type: string
        sceneImageId:
          description: asset ID of the image used as the scene style in the app
          type: string
        width:
          type: number
        backgroundColor:
          $ref: '#/components/schemas/Color'
        references:
          type: array
          items:
            $ref: '#/components/schemas/AssetReference'
    LegacyLayer:
      type: object
      deprecated: true
      description: Pre-discriminator layer shape. Accepted verbatim for back-compat; no server-side coercion.
      properties:
        name:
          type: string
          description: Name of the layer.
        image:
          $ref: '#/components/schemas/LayerImage'
        visible:
          type: boolean
        locked:
          type: boolean
        blendMode:
          type: string
          description: Blending mode for compositing this layer in 2D.
          example: normal
        opacity:
          type: number
        width:
          type: number
        height:
          type: number
        resolution:
          type: number
          description: Resolution multiplier (legacy).
          deprecated: true
        originScale:
          type: string
          enum:
          - 1x
          - 2x
          - 3x
          - upscale4x
          - external
          deprecated: true
      required:
      - name
    LayerModel3D:
      type: object
      required:
      - modelId
      - transform
      properties:
        modelId:
          type: string
          description: References a Model3D entity in this journey.
        resolvedAssetId:
          type: string
          readOnly: true
          description: Server-populated convenience pointer to the concrete asset currently used for this client/platform.
        transform:
          $ref: '#/components/schemas/Transform3D'
    LayerImage:
      type: object
      properties:
        id:
          type: string
          description: ID of the layer's image asset
        width:
          type: number
          description: Width of the image
        height:
          type: number
          description: Height of the image
        top:
          type: number
          description: Topmost Y coordinate of the image
        left:
          type: number
          description: Leftmost X coordinate of the image
    Journey:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the journey
        userId:
          type: string
          description: Unique identifier for the user
        type:
          type: string
          description: Type of the journey (design or shopping)
        createdAt:
          type: string
          format: date-time
          description: Timestamp of when the journey was created
        updatedAt:
          type: string
          format: date-time
          description: Timestamp of the last update to the journey
        images:
          type: array
          items:
            type: string
          description: List of image IDs associated with the journey, this property is deprecated and will no longer be returned to clients
          deprecated: true
        specifics:
          $ref: '#/components/schemas/JourneySpecifics'
    Layer:
      oneOf:
      - $ref: '#/components/schemas/ImageLayer'
      - $ref: '#/components/schemas/ModelLayer'
      - $ref: '#/components/schemas/LegacyLayer'
      discriminator:
        propertyName: layerType
        mapping:
          image: '#/components/schemas/ImageLayer'
          model: '#/components/schemas/ModelLayer'
    Color:
      type: object
      properties:
        red:
          type: integer
          description: Red component of the color (0-255)
        green:
          type: integer
          description: Green component of the color (0-255)
        blue:
          type: integer
          description: Blue component of the color (0-255)
        alpha:
          type: number
          format: float
          description: Alpha component of the color (0.0-1.0)
    Vector3:
      type: object
      properties:
        x:
          type: number
        y:
          type: number
        z:
          type: number
      required:
      - x
      - y
      - z
    AssetReference:
      type: object
      properties:
        assetId:
          type: string
        type:
          type: string
          description: Type of the asset reference.
          enum:
          - canvas
          - asset
        influence:
          type: number
          minimum: 0
          maximum: 1
        intent:
          type: array
          description: Per-image guidance from the reference context menu — aspect chips (e.g. texture, color) and/or free text describing how this image should influence the generation. Passed through to the design pipeline verbatim; sanitized there.
          items:
            type: string
    ImageLayer:
      type: object
      required:
      - layerType
      - name
      - visible
      - locked
      - opacity
      - image
      properties:
        layerType:
          type: string
          enum:
          - image
          description: Discriminator indicating an image (2D) layer.
        name:
          type: string
          description: Name of the layer
        image:
          $ref: '#/components/schemas/LayerImage'
        visible:
          type: boolean
        locked:
          type: boolean
        blendMode:
          type: string
          description: Blending mode for compositing this layer in 2D.
        opacity:
          type: number
        width:
          type: number
        height:
          type: number
        originScale:
          type: string
          enum:
          - 1x
          - 2x
          - 3x
          - upscale4x
          - external
          description: Deprecated legacy field preserved for compatibility.
          deprecated: true
    ModelLayer:
      type: object
      required:
      - layerType
      - name
      - visible
      - locked
      - opacity
      - model
      properties:
        layerType:
          type: string
          enum:
          - model
          description: Discriminator indicating a 3D model layer.
        name:
          type: string
        blendMode:
          type: string
        model:
          $ref: '#/components/schemas/LayerModel3D'
        visible:
          type: boolean
        locked:
          type: boolean
        opacity:
          type: number
    Quaternion:
      type: object
      properties:
        x:
          type: number
        y:
          type: number
        z:
          type: number
        w:
          type: number
      required:
      - x
      - y
      - z
      - w
    Transform3D:
      type: object
      properties:
        position:
          $ref: '#/components/schemas/Vector3'
        orientation:
          $ref: '#/components/schemas/Quaternion'
        scale:
          $ref: '#/components/schemas/Vector3'
      required:
      - position
      - rotationDegrees
      - scale
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: "Use your Cognito \"access_token\" or \"id_token\" obtained from AWS Cognito Hosted UI \nor CLI. Click \"Authorize\" and paste the token.\n"
    cognitoUserAuth:
      type: oauth2
      description: Cognito authorization code flow for users
      flows:
        implicit:
          authorizationUrl: https://auth.app.blng.ai/oauth2/authorize
          scopes:
            email: email
            profile: profile
            openid: openid
            aws.cognito.signin.user.admin: aws.cognito.signin.user.admin