Firstup API (v2)
API Concepts and Overview
Each API concept can be found in our Docs; we give an overview of each API, the expected behavior and what is possible.
Technical details are found in this reference, but some complex technicalities are further explained in our docs.
Further technical guidance on SCIM patching, pagination and filtering can be found in our docs:
Technical DetailsFrom this page you can download the OpenAPI specification for the Firstup API. This can be imported into tools such as Postman to generate a collection of test queries or converted into an SDK using Swagger Codegen. Alternatively, you can use the try me function in this platform.
AuthorizationAll API endpoints use the JSON content type and require an auth token. See Authentication and Authorization for more details on token management. The token and content type should be explicitly set in the request headers. For example:
curl -X GET "https://partner.socialchorus.com/v2/channels" -H "accept: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
https://developers.firstup.io/
Content Publishing
The Content Publishing API provides access to content the same way Program Studio does, enabling the creation and updating of articles, links, videos, and images.
- Security: Users with a “publisher” or higher role can work with content in this admin-like function. A 403 code is returned for content-related requests to users without a “publisher” or higher role. Permissions are not granular; any authenticated user may read, update, or take action on any existing content. See user roles and access for more guidance.
- States: Content is initially created in the “draft” state. It becomes fully visible in feeds when it has passed the “review” state (meaning that it requires review) and is in the “published” state. Content can also pass through “archived” (similar to deleted), “scheduled” (content to be published in the future automatically), “processing” (refers to media that is still being processed or uploaded; like content in the “draft” state, this content does not become “published” until processing has completed), and “processing error” (media or similar objects that fail during the processing phase; this content cannot be transitioned to another state) states.
- Sources: Content sources include “submitted” (by users); “Pinterest,”“RSS,”“Facebook,”“Twitter,” and “Instagram” (for content harvested from external sources); “SocialChorus CPCM” (for content that is republished between programs); “studio” (for admin-created content); and “OAuth Client” (for content published via the Partner API or other OAuth client).
For contextual guidance on content publishing, and for use case examples, refer to our Content Publishing Overview page.
Feeds
The Feeds API provides access to lists of content similar to how a user sees them in the Firstup experience application. Feeds are specific to the authenticated user and a user can only see what the platform gives them access to.
At their core, feeds are built using filters to find the exact topics and type of posts your application wishes to expose to its users. One of the basic filters is the channels.id
filter, but there are additional filters like content_type
and visibility
. There are also preset configurations called named feeds, which uses the name
query parameter and are convenient wrappers around a set of filters. These include things like "trending" posts, "following", and "myfeed". The full list of feed names is outlined in the listFeedPosts documentation.
Feeds are paginated, but have no total records as they are an inherently dynamic list of posts.
Actions like liking, bookmarking, and responding to polls can be taken on individual posts in the same way they can be taken on the experience applications.
For contexctual guidance on feeds, and for use examples, refer to our feeds overview page.
Use a specific named feed, which is a preset of filters for specific types of feeds. By default, requests return the "myfeed" feed, which includes posts the user can see but may not necessarily be following. Specifying a name not listed here will result in a 400 Bad Request error.
Find content matching provided keywords. When specified, parameters other than pagination and the topics filter will be ignored.
Return content posts that users have interacted with in the provided ways. Defaults to all content if left empty.
Build the feed from the given topics. Provide a list as either array or comma separated list. Returns posts that are published to ANY of the topics. Defaults to all topics.
Build the feed from the given initiative tags. Provide a list as either array or comma separated list. Returns posts that are published with ANY of the initiative tags. Defaults to all content.
Return only content matching the provided types, which can be a single type or a list as either array or comma separated list. Possible values include 'article', 'link', 'note', 'image', and 'video'. Defaults to all types. Including a type not listed here will result in a 400 Bad Request error.
Limit records to the value provided.
Return page.size
number of records starting at size*number
. Default is 1, resulting in the first page being retrieved
https://developers.firstup.io/v2/feed/posts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developers.firstup.io/v2/feed/posts?name=myfeed&search=string&filter.user_behaviors=liked&filter.channels.id=0&filter.initiative_tags.id=0&filter.content_type=article&filter.visibility=public&filter.featured=true&page.size=0&page.number=0' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '[
0
]'
Success
The version of the content creation studio used to generate the content.
1
- Legacy Studio2
- Creator Studio
The type of content. One of: article, image, link, note, or video. The content_type can determine how the post should be presented.
The post title. Can also be considered the headline.
When this content was last updated in ISO8601 format and UTC timezone.
When this content was published in ISO8601 format and UTC timezone.
An indication of the native availability of the post within the Firstup platform. If 'public', the post has a public_link_url and shares of the post should use that url as the canonical url. If 'private', the post requires user authentication to view.
The url of the post on the Firstup platform.
The publicly shareable url of the post if it's visibility is public. Private visibility posts will have no shareable_url.
The auto-generated string used when sharing the post.
The hashtag configured to be included when sharing the posts. example: #YourBrand
The language. For non-translatable posts, this value will be null.
The url of the primary image used for this post, if one exists.
{ "data": [ { … } ], "meta": { "filters": { … }, "feed_name": "myfeed", "pagination": { … } } }
https://developers.firstup.io/v2/feed/posts/{content_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developers.firstup.io/v2/feed/posts/{content_id}?locale=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
{ "data": { "id": 456, "uuid": "8b358e6b-11d4-4e89-bf7f-ec670e3398ed", "version": 1, "content_type": "article", "title": "Example Post Title", "summary": "Example Post Summary", "body": "Example post body", "accent_color": "string", "author": { … }, "channels": [ … ], "engagement": { … }, "updated_at": "2000-01-01T00:00:00Z", "published_at": "2000-01-01T00:00:00Z", "visibility": "public", "featured": true, "featured_label": "Save Pandora!", "permalink_url": "https://onfirstup.com/acme/acmetimes/sc4#contents/456", "shareable_url": "https://onfirstup.com/acme/acmetimes/sc4#contents/456", "prepopulated_share_message": "Example Post Title https://onfirstup.com/acme/acmetimes/sc4#contents/456", "appended_hashtag": "string", "language": "en", "is_translatable": true, "is_commentable": true, "comment_count": 5, "poster_image_url": "https://cdn.example.com/acme/acmetimes/images/abc123", "links": [ … ], "images": [ … ], "videos": [ … ] } }
Request
Displays the user’s engagements related to a single feed post, including a timestamp for each type of engagement; for example, a liked_at timestamp is present if the user has liked the post and a bookmarked_at is present if the user has bookmarked the post. The post must be visible to the user or a 404 Not Found response will be returned.
https://developers.firstup.io/v2/feed/posts/{content_id}/engagement
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developers.firstup.io/v2/feed/posts/{content_id}/engagement' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
{ "data": { "id": 0, "user_id": 456, "liked_at": "2000-01-01T00:00:00Z", "bookmarked_at": "2000-01-01T00:00:00Z", "viewed_at": "2000-01-01T00:00:00Z", "shares": [ … ], "total_likes_count": 5, "total_shares_count": 0, "total_bookmarks_count": 0 } }
User Management
The User Management API adheres to the SCIM 2.0 protocol unless otherwise stated, and provides management and provisioning of users in a program.
Managing users requires that the acting user have a role of Program Manager or Administrator, and users can only create or update users with a role less than or equal to their own.
For further guidance on User Management, refer to:
User Groups
The Group Management API adheres to the SCIM 2.0 protocol unless otherwise stated, and provides management and provisioning of Groups and its members (Users) within a Program.
Managing Groups requires that the acting User have a role of Program Manager or Administrator, and Group read and/or write access.
Note: User groups are SCIM groups only. Currently this API does not support creating audiences.
Webhooks
The Webhooks API provides a mechanism for subscribing to events that occur within the Firstup platform to receive http payloads when those events occur. Use webhook subscriptions to trigger actions on your own application.
Webhook events are sent by the Firstup platform as POST requests to your webhook url. Each event contains a payload specific to that event. More information about the webhooks system, including a list of events that can be subscribed to, is available on the Webhooks page.
Assistant Inbox
Note: This API is getting deprecated and is replaced by the Notification Center.