How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Opal API v2

The stable REST surface of the Opal marketing planning platform — 66 paths and 97 operations across stories, moments, content, placements, assets, asset references, labels, label sets, stamps, brands, brand settings, accounts, activities, annotations, messages, reactions, budgets, rich text, workflows, workflow assignments/stages/responses and users. Endpoints in the JSON:API, Unstable and Proposed categories are JSON:API-compliant and expect `Accept: application/vnd.api+json`; "Other" endpoints are stable but plain `application/json`. Authenticated with OAuth 2.0 authorization code; a `Session-Token` header is still accepted but is documented as deprecated.

This API exposes 97 operations across 66 paths, organized into 31 resource areas, and defines 31 schemas. It is described by OpenAPI 3.0.0, at version 2.0.0.

Requests are made against a single base URL, https://login.ouropal.com.

97 operations 66 paths 31 schemas 13 DELETE41 GET14 PATCH27 POST2 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.0.0
API Version
2.0.0
Base URL
https://login.ouropal.com
Authentication
OAuth 2.0, API Key
Resource Areas
31

Authentication & Security 2

Opal API v2 declares 2 security schemes for authenticating requests. It supports OAuth 2.0 (oauth2) using the authorizationCode flow, exposing 1 scope. An API key is passed in the header as Session-Token (api_key).

  • oauth2 — This API uses OAuth 2.0 with the authorization code grant flow. You can find more detailed authentication instructions in the [Authentication Strategies](/api/…
  • api_key — (Deprecated) This API also supports authentication via an API or session token set in the request headers.

Paths & Operations 97

Across 66 paths, the API surfaces 97 operations — 13 DELETE, 41 GET, 14 PATCH, 27 POST, 2 PUT. They span 31 resource areas, including Accounts, Activities, Annotations, Assets, Url Uploads, Asset References, Asset Reference Options, URL Previews, and 23 more. Each is listed below with its method, path, parameters, and response codes.

Accounts 7
GET
/accounts/{account_id}/placements
List placements associated with given account
ReadPlacementsV0 2 params → 200404
POST
/accounts/{account_id}/placements
Create a placement to associate with the given account
CreatePlacementV0 1 param body → 200404
GET
/accounts/{account_id}/placements/{id}
Get placement by ID
ReadPlacementV0 3 params → 200404
PATCH
/accounts/{account_id}/placements/{id}
Update placement
UpdatePlacementV0 2 params body → 200404
DELETE
/accounts/{account_id}/placements/{id}
Delete placement
DeletePlacementV0 2 params → 204404
GET
/accounts/v2
Get all accounts available to the authenticated user
ReadAccountsV2 4 params → 200400403404
GET
/accounts/v2/{account_id}
Get the specified account
ReadAccountV2 2 params → 200400403404
Activities 5

Activities Overview In Opal, "activities" encompass both things like someone adding an asset to content and also someone sending a chat message. In the user interface, these are c…

GET
/activities/v1/{entity_type}/activity_types
Returns a list of possible activity types for a given object, as specified by the entitytype parameter
ReadActivityTypesV1 1 param → 200
GET
/activities/v1/{entity_type}/{entity_id}
Returns all activities for a given object, as specified by the entitytype parameter.
ReadActivitiesV1 3 params → 200404
POST
/activities/v1/{entity_type}/{entity_id}
Create an activity for a given moment or piece of content
CreateActivityV1 2 params body → 200404
GET
/activities/v1/{entity_type}/{entity_id}/checkpoint
Returns latest checkpoint for a given entity and user
ReadCheckpointV1 2 params → 200404
POST
/activities/v1/{entity_type}/{entity_id}/checkpoint
Create a checkpoint for a give entity
CreateCheckpointV1 2 params body → 200404
Annotations 4
DELETE
/annotation/v1/{annotation_id}
Delete an annotation
DeleteAnnotationV1 1 param → 200404
GET
/annotations/v1/{snapshot_id}
List of annotations associated with a snapshot
ReadAnnotationsV1 2 params → 200404
POST
/annotations/v1/{snapshot_id}
Create an annotation associated with a snapshot
CreateAnnotationV1 1 param → 201404
POST
/messages/v1/{annotation_id}
Create a message association with an annotation
CreateMessageV2 1 param → 201404
Assets 3

Assets Overview Assets represent images, videos, PDFs, and any other file uploads. Any upload to the Opal platform must start with an asset. Some resources like boards can be dire…

POST
/assets/v2
Upload an asset available to the authenticated user.
CreateAssetV2 1 param body → 201400401422
GET
/assets/v2
[UNSTABLE] Get a collection of assets available to the authenticated user.
GetAssetsV2 2 params → 200400401
GET
/assets/v2/{asset_id}
Get an assets metadata
GetAssetV2 1 param → 200400401403404422
Url Uploads 3
GET
/assets/v2/url_uploads/{url_upload_id}
Get a URL upload
GetUrlUploadV2 2 params → 200400401404
POST
/assets/v2/url_uploads
Create a url upload
CreateUrlUploadV2 3 params body → 201400401404
GET
/assets/v2/url_uploads
Get a collection of URL uploads
ReadUrlUploadsV2 2 params → 200400401404
Asset References 4

Asset References Overview In Opal, you create assets to represent files uploaded to the platform and assetreferences to surface those assets for use in the Asset Library, Moments,…

POST
/api/v1/asset_references
Create an asset reference, optionally associated with Opal objects.
CreateAssetReferenceV1 body → 201400401404409422
GET
/api/v1/asset_references/{asset_reference_id}
Get an asset reference available to the authenticated user.
ReadAssetReferencesV1 1 param → 200400401422
PATCH
/api/v1/asset_references/{asset_reference_id}
Updates an asset reference and its associations with Opal objects.
UpdateAssetReferenceV1 1 param body → 200400401404409422
DELETE
/api/v1/asset_references/{asset_reference_id}
Deletes an asset reference.
DeleteAssetReferenceV1 1 param → 204401404
Asset Reference Options 2
POST
/api/v1/asset_references/asset_reference_options
Create a new asset reference option.
CreateAssetReferenceOptionV1 body → 201400401404409422
DELETE
/api/v1/asset_references/asset_reference_options
Delete an Asset Reference Option
DeleteAssetReferenceOptionV1 1 param → 204400401404
URL Previews 1
POST
/api/v1/asset_references/url_preview
Create a new URL Preview.
CreateUrlPreviewV1 body → 200401500
Asset Reference Usage Rights Options 1
GET
/api/v1/asset_references/usage_rights_options
Get usage rights options available to the authenticated user.
ReadAssetReferenceUsageRightOptionsV2 → 200400401422
Search 1
GET
/api/v1/search
Returns all entities that match query string filtered by brand slug
ReadSearchesV1 2 params → 200404
Stories V1 2
POST
/api/v1/stories
Create a Story.
CreateStoryV1 body → 201400
PUT
/api/v1/stories
Update a Story.
UpdateStoryV1 body → 200400
Brands 1
GET
/brands/v2/brands
List all visible brands in the requesting users Opal
ReadBrandsV2 5 params → 200401
Brand Settings 2
GET
/brand_settings/v2
Returns the namespaced brand settings for this user in this view.
ReadBrandSettingsV2 2 params → 200404
PATCH
/brand_settings/v2/{brand_setting_id}
Update a workspace/brand's settings
UpdateBrandSettingV2 2 params body → 202
Budgets 3
GET
/budgets/stories/{story_id}
Get a budget associated with a Story.
ReadBudgetV0 1 param → 200404
POST
/budgets/stories/{story_id}
Create a budget for a Story.
CreateBudgetV0 1 param body → 200404422
DELETE
/budgets/stories/{budget_id}
Delete the budget with the given Id.
DeleteBudgetV0 1 param → 204
Content 8
GET
/content/v2
Get a batch of content
ReadContentsV2 6 params → 200404
POST
/content/v2
Create a piece of Content
CreateContentV2 body → 201
GET
/content/v2/{content_id}
Get a single piece of content
ReadContentV2 4 params → 200401404
PATCH
/content/v2/{content_id}
Update a piece of Content
UpdateContentV2 1 param body → 202404
DELETE
/content/v2/{content_id}
Delete the specified Content
DeleteContentV2 1 param → 202400401403404
POST
/content/v2/{content_id}/placements/{placement_id}
Join content to a placement
CreatePostPlacementV2 2 params → 200404
PUT
/content/v2/{content_id}/placements/{placement_id}
Attach content to a different placement
PutPostPlacementV2 2 params → 200404
DELETE
/content/v2/{content_id}/placements
Remove a piece of content from a placement.
DeletePostPlacementV2 1 param → 204404
Delivery Records 1
PATCH
/delivery_records/v2/{delivery_record_id}
Update a delivery record
UpdateDeliveryRecordV2 1 param body → 200404
Labels 4

Labels Overview In Opal, Labels are a useful way of categorizing resources to be filtered or grouped. Label Inheritance Labels follow StoryFirst inheritance rules. This means that…

GET
/labels/v2
Find labels for a Workspace.
ReadLabelsV2 5 params → 200401404
POST
/labels/v2
Create a new label.
CreateLabelV2 body → 201400401409422
PATCH
/labels/v2/{label_id}
Update a label.
UpdateLabelV2 1 param body → 201400401404409422
DELETE
/labels/v2/{label_id}
Delete a label.
DeleteLabelV2 1 param → 204400401404
Label Sets 1
GET
/label_sets/v2
Get label sets available to the authenticated user.
ReadLabelSetsV2 4 params → 200400401
Messages 1
DELETE
/message/v1/{message_id}
Delete a message
DeleteMessageV2 1 param → 200404
Moments 5
GET
/moments/v2
Return all moments available to the authenticated user.
ReadMomentsV2 6 params → 200400401422
POST
/moments/v2
Create a new public or private moment.
CreateMomentV2 body → 201400401404409422
GET
/moments/v2/{moment_id}
Return the specified Moment
ReadMomentV2 4 params → 200401403404
PATCH
/moments/v2/{moment_id}
Update the specified Moment
UpdateMomentV2 1 param body → 200401403404409
DELETE
/moments/v2/{moment_id}
Delete the specified Moment
DeleteMomentV2 1 param → 202401403404
Phase Items 2
GET
/phase_items/v2
Return all phase items available to the authenticated user.
ReadPhaseItemsV2 5 params → 200400401403404422
PATCH
/phase_items/v2/{phase_item_id}
Update a phase item
UpdatePhaseItemV2 1 param body → 200400401403404409422
Privacy 1
POST
/privacy/v2/groups/{group_id}/members
Create a new Privacy Group Membership
CreateMemberV2 1 param body → 201403404409422
Post Types 1
GET
/post_types/v2
Returns a list of Post Typs
ReadPostTYpesV2 1 param → 200
Reactions 3
POST
/reactions/v2
Create an emoji reaction on a given activity
CreateReactionV2 body → 200404
DELETE
/reactions/v2/{id}
Delete an emoji reaction
DeleteReactionV2 1 param → 204404
GET
/reactions/v2/reaction_types
Returns a list of possible reaction types
ReadReactionTypesV2 → 200
Rich Texts 2
GET
/rich_texts/v1/{entity_type}/{entity_id}/current
Get latest richtext by entitytype and entityid
ReadRichTextV1 3 params → 200204404422
POST
/rich_texts/v1/{entity_type}/{entity_id}
Create a richtext object, given creator entitytype and entityid
CreateRichTextV1 2 params body → 201404422500
Services 1
GET
/services/v2
Returns a list of Services
ReadServicesV2 4 params → 200
Stamps 1

Stamps Overview In Opal, a Stamp acts as a pre-configured template for creating moments or content. The stamptype attribute specifies if the stamp is intended for moments or conte…

GET
/stamps/v2
Show all stamps
ReadStampsV2 2 params → 200404
Stories 4
GET
/stories/v2/{story_id}
Find a Story by ID
ReadStoryV2 1 param → 200404
PATCH
/stories/v2/{story_id}
Update the specified story
UpdateStoryV2 1 param body → 200400403404
GET
/stories/v2
Get a collection of stories
ReadStoriesV2 4 params → 200
POST
/stories/v2
Create a story
CreateStoryV2 body → 201400403404
Users 5
GET
/users/v2/{user_id}
Return a user by ID
ReadUserV2 2 params → 200401
PATCH
/users/v2/{user_id}
Update the specified user
UpdateUserV2 1 param body → 200400403404422
GET
/users/v2/me
Return the authenticated user
ReadMeV2 2 params → 200401
PATCH
/users/v2/me/moments_setting
Update the Moments Setting for the authenticated user
UpdateMomentsSettingV2 body → 200400403404
GET
/users/v2/users
List all users in the requesting users Opal
ReadUsersV2 5 params → 200401
User Domain Views 1
POST
/user_domain_views/v2/user_domain_views
Create a User Domain View
CreateUserDomainViewV2 body → 200400401422
Workflows 17

Workflows Overview In Opal, a workflow is an arrangement of tasks and approvals required to progress through the lifecycle of a StoryFirst resource. Historical Note: The v2 Workfl…

POST
/workflows/v2/contexts
Create a Context
CreateContextV2 1 param body → 201400401404422
GET
/workflows/v2/workflows
Get a collection of workflows
ReadWorkflowsV2 5 params → 200400401404
POST
/workflows/v2/workflows
Create a workflow
CreateWorkflowsV2 2 params body → 201400401404
GET
/workflows/v2/workflows/{workflow_id}
Get a Workflow
ReadWorkflowV2 3 params → 200400401404
PATCH
/workflows/v2/workflows/{workflow_id}/rewind
Rewind a Workflow
RewindWorkflowV2 2 params body → 200400401404422
POST
/workflows/v2/workflows/{workflow_id}/duplicate
Duplicate a Workflow
DuplicateWorkflowV2 2 params body → 201400401404422
POST
/workflows/v2/stages
Create a stage
CreateStageV2 1 param body → 200400401422
GET
/workflows/v2/stages/{stage_id}
Get a stage by ID
ReadStageV2 2 params → 200400401422
PATCH
/workflows/v2/stages/{stage_id}
Update a Stage by id
UpdateStageV2 2 params body → 200400401403404409422
DELETE
/workflows/v2/stages/{stage_id}
Delete a stage
DeleteStageV2 2 params → 200404409
GET
/workflows/v2/assignments/{assignment_id}
Get an Assignment
ReadAssignmentV2 2 params → 200400401404422
PATCH
/workflows/v2/assignments/{assignment_id}
Update an assignment by id
UpdateAssignmentV2 1 param body → 200400401403404409422
DELETE
/workflows/v2/assignments/{assignment_id}
Delete an Assignment
DeleteAssignmentV2 1 param → 200400401404422
GET
/workflows/v2/assignments
Get a collection of assignments
ReadAssignmentsV2 4 params → 200400401404
POST
/workflows/v2/assignments
Create an assignment
CreateAssignmentV2 body → 201400401404
POST
/workflows/v2/responses
Create a Response for an Assignment
CreateResponseV2 1 param body → 201400401404
GET
/workflows/v2/responses/{response_id}
Fetch a Response for an Assignment
ReadResponseV2 2 params → 200400401404422

Schemas 31

The contract defines 31 schemas that model the data the API accepts and returns. The most detailed are user (5 properties), opal (5 properties), content (5 properties), brand (5 properties). Each schema is shown below with its type and property counts.

account
object
4 properties 4 required
asset
object
4 properties 4 required
asset_reference
object
4 properties 4 required
assignment
object
4 properties 4 required
brand
object
5 properties 4 required
budget
object
4 properties 4 required
content
object
5 properties 5 required
context
object
4 properties 4 required
dispatch_provider
object
3 properties 3 required
label
object
4 properties 4 required
label_set
object
4 properties 4 required
link
object
4 properties 4 required
link_data
object
4 properties 4 required
moment
object
4 properties 4 required
moments_setting
object
4 properties 4 required
opal
object
5 properties 5 required
option
object
4 properties 4 required
option_value
object
3 properties 3 required
phase_item
object
4 properties 3 required
plan
object
3 properties 3 required
post_component
object
4 properties 4 required
post_option
object
4 properties 4 required
response
object
4 properties 4 required
rich_text_document
object
4 properties 4 required
service
object
4 properties 4 required
stage
object
4 properties 4 required
stamp
object
4 properties 4 required
story
object
4 properties 3 required
user
object
5 properties 4 required
user_profile
object
4 properties 4 required
workflow
object
5 properties 3 required

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

opal-v2-openapi.yml Raw ↑
Where this information came from

This is an independent, third-party profile of Opal API v2, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.