Getting Started
The Viraly API gives you programmatic access to your workspace. Create and schedule posts, manage channels, retrieve analytics, and more. All API requests are scoped to your workspace via your API key.
Base URL
https://api.viraly.io/api/v1Quick Start
Make your first API call to verify your key is working:
curl "https://api.viraly.io/api/v1/workspace" \
-H "Authorization: Bearer vly_your_api_key"Authentication
All API requests require a Bearer token in the Authorization header. API keys are created in your workspace settings and start with the vly_ prefix.
Authorization: Bearer vly_your_api_keyPermission Scopes
Each API key has granular permissions. If a key lacks the required permission, the API returns a 403 error.
posts:readposts:writechannels:readchannels:writeanalytics:readbiolinks:readbiolinks:writemedia:readmedia:writesocial_sets:readsocial_sets:writecategories:readcategories:writehashtags:readhashtags:writeideas:readideas:writefeeds:readfeeds:writeurl_shortener:readurl_shortener:writesubscribers:readworkspace:readRate Limits
Rate limits are applied per API key and vary by subscription plan. When exceeded, the API returns 429 Too Many Requests.
| Plan | Requests / Minute | Requests / Day |
|---|---|---|
| Free | 30 | 1,000 |
| Influencer | 60 | 5,000 |
| Business | 120 | 20,000 |
| Agency | 300 | 100,000 |
| Enterprise | 600 | 500,000 |
Rate Limit Headers
Every response includes these headers:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
X-RateLimit-Reset: 1712582400
Retry-After: 30 # Only on 429 responsesPagination
List endpoints return paginated results. Use page and per_page query parameters to control pagination. The maximum per_page value is 100.
{
"data": [ ... ],
"meta": {
"requestId": "req_abc123",
"pagination": {
"page": 1,
"perPage": 25,
"total": 142,
"totalPages": 6
}
}
}Error Handling
The API uses standard HTTP status codes. Errors return a JSON body with a descriptive message.
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request - invalid parameters |
| 401 | Unauthorized - invalid or missing API key |
| 403 | Forbidden - insufficient permissions |
| 404 | Not found - resource does not exist |
| 429 | Rate limit exceeded |
{
"error": {
"code": "not_found",
"message": "Post with ID 'abc123' was not found.",
"requestId": "req_abc123"
}
}AI / LLM Integration
Building with AI agents or LLMs? We provide a machine-readable API reference optimized for AI consumption. Point your AI agent or coding assistant to this file for complete endpoint coverage with structured examples.
viraly.io/llms.md
LLM-optimized API reference with every endpoint, parameter, and response shape
API Reference
Posts
Create, schedule, and manage social media posts across all connected channels.
| Method | Endpoint |
|---|---|
| GET | /posts |
| GET | /posts/{id} |
| POST | /posts |
| PUT | /posts/{id} |
| DELETE | /posts/{id} |
| PUT | /posts/{id}/schedule |
| POST | /posts/{id}/publish |
/api/v1/postsRetrieve a paginated list of posts with optional filters.
Query Parameters
social_set_idstring?Filter by social setchannel_idstring?Filter by channelstatusstring?Filter by status: draft, scheduled, published, failedstart_datestring?Start date (YYYY-MM-DD)end_datestring?End date (YYYY-MM-DD)pageinteger?Page number (default: 1)per_pageinteger?Items per page (default: 25, max: 100)sortstring?Sort by: created_at, scheduled_at, published_atorderstring?Sort order: asc, descRequest
curl "https://api.viraly.io/api/v1/posts" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "a8Kf3mN9",
"title": "Exciting product launch!",
"status": "Scheduled",
"scheduledAt": "2026-04-15T14:00:00Z",
"channelId": "pQ2rS5tU",
"config": {
"channelType": "Instagram",
"caption": "We're thrilled to announce..."
},
"createdAt": "2026-04-08T10:30:00Z"
}
],
"meta": {
"requestId": "req_abc123",
"pagination": {
"page": 1,
"perPage": 25,
"total": 142,
"totalPages": 6
}
}
}/api/v1/posts/{id}Get a post
Path Parameters
idstringPost IDRequest
curl "https://api.viraly.io/api/v1/posts/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"id": "a8Kf3mN9",
"title": "Exciting product launch!",
"status": "Scheduled",
"scheduledAt": "2026-04-15T14:00:00Z",
"channelId": "pQ2rS5tU",
"config": {
"channelType": "Instagram",
"caption": "We're thrilled to announce our new feature..."
},
"createdAt": "2026-04-08T10:30:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/postsCreate a post
Request
curl -X POST "https://api.viraly.io/api/v1/posts" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"channelId": "pQ2rS5tU",
"config": {
"channelType": "Instagram",
"caption": "Check out our latest update!",
"mediaType": "Image"
},
"scheduledAt": "2026-04-15T14:00:00Z",
"timezone": "America/New_York"
}'Response
{
"data": {
"id": "x7Lp9Qr2",
"status": "Scheduled",
"scheduledAt": "2026-04-15T14:00:00Z",
"channelId": "pQ2rS5tU",
"createdAt": "2026-04-08T11:00:00Z"
},
"meta": { "requestId": "req_def456" }
}/api/v1/posts/{id}Update a post
Path Parameters
idstringPost IDRequest
curl -X PUT "https://api.viraly.io/api/v1/posts/{id}" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"channelId": "pQ2rS5tU",
"config": {
"channelType": "Instagram",
"caption": "Updated caption for our launch post!"
},
"scheduledAt": "2026-04-16T10:00:00Z"
}'Response
{
"data": {
"id": "a8Kf3mN9",
"status": "Scheduled",
"scheduledAt": "2026-04-16T10:00:00Z"
},
"meta": { "requestId": "req_ghi789" }
}/api/v1/posts/{id}Delete a post
Path Parameters
idstringPost IDRequest
curl -X DELETE "https://api.viraly.io/api/v1/posts/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{}/api/v1/posts/{id}/scheduleReschedule a post
Path Parameters
idstringPost IDRequest
curl -X PUT "https://api.viraly.io/api/v1/posts/{id}/schedule" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"scheduledAt": "2026-04-20T09:00:00Z",
"timezone": "America/New_York"
}'Response
{
"data": {
"id": "a8Kf3mN9",
"status": "Scheduled",
"scheduledAt": "2026-04-20T09:00:00Z"
},
"meta": { "requestId": "req_jkl012" }
}/api/v1/posts/{id}/publishPublish a post immediately
Path Parameters
idstringPost IDRequest
curl -X POST "https://api.viraly.io/api/v1/posts/{id}/publish" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"id": "a8Kf3mN9",
"status": "Publishing"
},
"meta": { "requestId": "req_mno345" }
}Channels
View and manage connected social media channels (profiles/pages).
| Method | Endpoint |
|---|---|
| GET | /channels |
| GET | /channels/{id} |
| GET | /channels/{id}/stats |
/api/v1/channelsList channels
Query Parameters
social_set_idstring?Filter by social setRequest
curl "https://api.viraly.io/api/v1/channels" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "pQ2rS5tU",
"name": "Viraly Official",
"type": "Instagram",
"username": "@viraly",
"status": "Active",
"pictureUrl": "https://...",
"createdAt": "2025-10-01T08:00:00Z"
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/channels/{id}Get a channel
Path Parameters
idstringChannel IDRequest
curl "https://api.viraly.io/api/v1/channels/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"id": "pQ2rS5tU",
"name": "Viraly Official",
"type": "Instagram",
"username": "@viraly",
"status": "Active",
"createdAt": "2025-10-01T08:00:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/channels/{id}/statsGet channel statistics
Path Parameters
idstringChannel IDRequest
curl "https://api.viraly.io/api/v1/channels/{id}/stats" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"totalPosts": 284,
"scheduledPosts": 12,
"publishedPosts": 265,
"failedPosts": 7
},
"meta": { "requestId": "req_abc123" }
}Bio Links
Create and manage link-in-bio pages with custom themes, links, and subscriber collection.
| Method | Endpoint |
|---|---|
| GET | /biolinks |
| GET | /biolinks/{id} |
| POST | /biolinks |
| PUT | /biolinks/{id} |
| DELETE | /biolinks/{id} |
| GET | /biolinks/{id}/linked-channels |
| PUT | /biolinks/{id}/linked-channels |
| GET | /biolinks/{id}/subscribers |
/api/v1/biolinksList bio links
Query Parameters
social_set_idstring?Filter by social setRequest
curl "https://api.viraly.io/api/v1/biolinks" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "d2Xp7rK8",
"title": "My Links",
"slug": "viraly",
"domain": null,
"createdAt": "2025-11-20T10:00:00Z"
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/biolinks/{id}Get a bio link
Path Parameters
idstringBio Link IDRequest
curl "https://api.viraly.io/api/v1/biolinks/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"id": "d2Xp7rK8",
"title": "My Links",
"slug": "viraly",
"config": "...",
"domain": null,
"socialSetId": "TrrdKTIr",
"createdAt": "2025-11-20T10:00:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/biolinksCreate a bio link
Request
curl -X POST "https://api.viraly.io/api/v1/biolinks" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"title": "My New Page",
"slug": "my-brand",
"socialSetId": "TrrdKTIr"
}'Response
{
"data": {
"id": "f3Xp8rK9",
"title": "My New Page",
"slug": "my-brand",
"createdAt": "2026-04-09T10:00:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/biolinks/{id}Update a bio link
Path Parameters
idstringBio Link IDRequest
curl -X PUT "https://api.viraly.io/api/v1/biolinks/{id}" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated Title"
}'Response
{
"data": {
"id": "d2Xp7rK8",
"title": "Updated Title",
"slug": "viraly"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/biolinks/{id}Delete a bio link
Path Parameters
idstringBio Link IDRequest
curl -X DELETE "https://api.viraly.io/api/v1/biolinks/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{}/api/v1/biolinks/{id}/linked-channelsGet linked channels for a bio link
Path Parameters
idstringBio Link IDRequest
curl "https://api.viraly.io/api/v1/biolinks/{id}/linked-channels" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "lc1234",
"channelId": "VQ4fKSE9",
"isEnabled": true,
"displayStyle": "link"
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/biolinks/{id}/linked-channelsUpdate linked channels
Path Parameters
idstringBio Link IDRequest
curl -X PUT "https://api.viraly.io/api/v1/biolinks/{id}/linked-channels" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"channels": [
{ "channelId": "VQ4fKSE9", "isEnabled": true }
]
}'Response
{}/api/v1/biolinks/{id}/subscribersList bio link subscribers
Path Parameters
idstringBio Link IDQuery Parameters
pageinteger?Page numberper_pageinteger?Items per pageRequest
curl "https://api.viraly.io/api/v1/biolinks/{id}/subscribers" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "e4Yq9sL0",
"email": "subscriber@example.com",
"name": "Jane Doe",
"createdAt": "2026-03-15T14:30:00Z"
}
],
"meta": {
"requestId": "req_abc123",
"pagination": { "page": 1, "perPage": 25, "total": 89, "totalPages": 4 }
}
}Analytics
Trigger analytics syncs for connected channels. Analytics data is fetched from each platform's API.
| Method | Endpoint |
|---|---|
| POST | /analytics/{channelId}/sync |
/api/v1/analytics/{channelId}/syncEnqueues a background job to fetch the latest analytics data from the platform.
Path Parameters
channelIdstringChannel IDRequest
curl -X POST "https://api.viraly.io/api/v1/analytics/{channelId}/sync" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"status": "sync_started",
"channelId": "pQ2rS5tU"
},
"meta": { "requestId": "req_abc123" }
}Media
Upload and manage media files (images, videos) used in posts.
| Method | Endpoint |
|---|---|
| GET | /media |
| GET | /media/{id} |
| DELETE | /media/{id} |
| GET | /media/collections |
/api/v1/mediaList media items
Query Parameters
social_set_idstring?Filter by social setcollection_idstring?Filter by collectionpageinteger?Page numberper_pageinteger?Items per pageRequest
curl "https://api.viraly.io/api/v1/media" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "f6Zr1tM2",
"type": 0,
"status": "Ready",
"createdAt": "2026-04-01T08:15:00Z"
}
],
"meta": {
"requestId": "req_abc123",
"pagination": { "page": 1, "perPage": 25, "total": 53, "totalPages": 3 }
}
}/api/v1/media/{id}Get a media item
Path Parameters
idstringMedia item IDRequest
curl "https://api.viraly.io/api/v1/media/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"id": "f6Zr1tM2",
"role": "PostAttachment",
"type": "Image",
"status": "Ready",
"tags": [],
"socialSetId": "TrrdKTIr",
"createdAt": "2026-04-01T08:15:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/media/{id}Delete a media item
Path Parameters
idstringMedia item IDRequest
curl -X DELETE "https://api.viraly.io/api/v1/media/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{}/api/v1/media/collectionsList media collections
Query Parameters
social_set_idstring?Filter by social setRequest
curl "https://api.viraly.io/api/v1/media/collections" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "mc1234",
"name": "Campaign Assets",
"order": 0,
"starred": false,
"tags": [],
"socialSetId": "TrrdKTIr",
"createdAt": "2026-03-01T10:00:00Z"
}
],
"meta": { "requestId": "req_abc123" }
}Categories
Organize posts with custom categories for campaign tracking and analytics.
| Method | Endpoint |
|---|---|
| GET | /categories |
| POST | /categories |
| PUT | /categories/{id} |
| DELETE | /categories/{id} |
/api/v1/categoriesList categories
Request
curl "https://api.viraly.io/api/v1/categories" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "h0Bt5vO6",
"name": "Product Updates",
"color": "#3B82F6",
"postCount": 42
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/categoriesCreate a category
Request
curl -X POST "https://api.viraly.io/api/v1/categories" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Product Updates",
"color": "#3B82F6"
}'Response
{
"data": {
"id": "i1Cu6wP7",
"name": "Product Updates",
"color": "#3B82F6",
"postCount": 0
},
"meta": { "requestId": "req_abc123" }
}/api/v1/categories/{id}Update a category
Path Parameters
idstringCategory IDRequest
curl -X PUT "https://api.viraly.io/api/v1/categories/{id}" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Name",
"color": "#EF4444"
}'Response
{
"data": {
"id": "h0Bt5vO6",
"name": "Updated Name",
"color": "#EF4444",
"postCount": 42
},
"meta": { "requestId": "req_abc123" }
}/api/v1/categories/{id}Delete a category
Path Parameters
idstringCategory IDRequest
curl -X DELETE "https://api.viraly.io/api/v1/categories/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{}Ideas
Manage content idea boards and individual ideas for content planning.
| Method | Endpoint |
|---|---|
| GET | /idea-boards |
| POST | /ideas |
| GET | /idea-boards/{boardId}/ideas |
| PUT | /ideas/{id} |
| DELETE | /ideas/{id} |
/api/v1/idea-boardsList idea boards
Query Parameters
social_set_idstring?Filter by social setRequest
curl "https://api.viraly.io/api/v1/idea-boards" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "i2Cu7wP8",
"name": "Q2 Campaign Ideas",
"description": "Ideas for Q2 product launch",
"colorHex": "#10B981"
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/ideasCreate an idea
Request
curl -X POST "https://api.viraly.io/api/v1/ideas" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"boardId": "i2Cu7wP8",
"title": "Behind-the-scenes video",
"caption": "Show the team working on the new feature",
"notes": "Film during standup on Thursday"
}'Response
{
"data": {
"id": "j4Dv9xQ0",
"title": "Behind-the-scenes video",
"status": "Active",
"boardId": "i2Cu7wP8",
"createdAt": "2026-04-08T13:00:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/idea-boards/{boardId}/ideasList ideas in a board
Path Parameters
boardIdstringIdea Board IDRequest
curl "https://api.viraly.io/api/v1/idea-boards/{boardId}/ideas" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "j4Dv9xQ0",
"title": "Behind-the-scenes video",
"caption": "Show the team working on the new feature",
"status": "Draft",
"displayOrder": 0,
"boardId": "i2Cu7wP8",
"createdAt": "2026-04-08T13:00:00Z"
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/ideas/{id}Update an idea
Path Parameters
idstringIdea IDRequest
curl -X PUT "https://api.viraly.io/api/v1/ideas/{id}" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated idea title",
"caption": "Updated caption"
}'Response
{
"data": {
"id": "j4Dv9xQ0",
"title": "Updated idea title",
"status": "Active"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/ideas/{id}Delete an idea
Path Parameters
idstringIdea IDRequest
curl -X DELETE "https://api.viraly.io/api/v1/ideas/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{}Feeds
Manage RSS feed collections and individual feeds for content curation.
| Method | Endpoint |
|---|---|
| GET | /feed-collections |
| GET | /feeds |
| POST | /feeds |
| DELETE | /feeds/{id} |
/api/v1/feed-collectionsList feed collections
Query Parameters
socialSetIdstringSocial set IDRequest
curl "https://api.viraly.io/api/v1/feed-collections" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "fc1234",
"name": "Industry News",
"description": "Top industry RSS feeds",
"displayOrder": 0,
"socialSetId": "TrrdKTIr"
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/feedsList feeds
Query Parameters
socialSetIdstringSocial set IDRequest
curl "https://api.viraly.io/api/v1/feeds" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "fd5678",
"name": "TechCrunch",
"url": "https://techcrunch.com/feed/",
"status": "Active",
"socialSetId": "TrrdKTIr"
}
],
"meta": { "requestId": "req_abc123" }
}/api/v1/feedsCreate a feed
Request
curl -X POST "https://api.viraly.io/api/v1/feeds" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "TechCrunch",
"url": "https://techcrunch.com/feed/",
"socialSetId": "TrrdKTIr"
}'Response
{
"data": {
"id": "fd9012",
"name": "TechCrunch",
"url": "https://techcrunch.com/feed/",
"status": "Active"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/feeds/{id}Delete a feed
Path Parameters
idstringFeed IDRequest
curl -X DELETE "https://api.viraly.io/api/v1/feeds/{id}" \
-H "Authorization: Bearer vly_your_api_key"Response
{}URL Shortener
Create shortened URLs with click tracking and analytics.
| Method | Endpoint |
|---|---|
| GET | /short-urls |
| POST | /short-urls |
| GET | /short-urls/{shortCode}/clicks |
/api/v1/short-urlsList shortened URLs
Query Parameters
pageinteger?Page numberper_pageinteger?Items per pageRequest
curl "https://api.viraly.io/api/v1/short-urls" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": 1234,
"shortCode": "abc123",
"originalUrl": "https://example.com/very-long-url",
"shortUrl": "https://vly.to/abc123",
"totalClicks": 847,
"createdAt": "2026-03-01T10:00:00Z"
}
],
"meta": {
"requestId": "req_abc123",
"pagination": { "page": 1, "perPage": 25, "total": 15, "totalPages": 1 }
}
}/api/v1/short-urlsCreate a shortened URL
Request
curl -X POST "https://api.viraly.io/api/v1/short-urls" \
-H "Authorization: Bearer vly_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/my-very-long-campaign-url?utm_source=social"
}'Response
{
"data": {
"id": 1235,
"shortCode": "def456",
"originalUrl": "https://example.com/my-very-long-campaign-url?utm_source=social",
"shortUrl": "https://vly.to/def456",
"createdAt": "2026-04-08T14:00:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/short-urls/{shortCode}/clicksGet click analytics for a shortened URL
Path Parameters
shortCodestringShort code of the URLRequest
curl "https://api.viraly.io/api/v1/short-urls/{shortCode}/clicks" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"totalClicks": 847,
"clicks": [
{
"country": "United States",
"city": "New York",
"device": "Desktop",
"os": "Windows",
"createdAt": "2026-04-08T15:30:00Z"
}
]
},
"meta": { "requestId": "req_abc123" }
}Workspace
View workspace information, plan details, and team members.
| Method | Endpoint |
|---|---|
| GET | /workspace |
| GET | /workspace/users |
/api/v1/workspaceGet workspace info
Request
curl "https://api.viraly.io/api/v1/workspace" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": {
"id": "k6Ew1yR2",
"name": "Acme Marketing",
"plan": "Business",
"status": "Active",
"createdAt": "2025-06-01T00:00:00Z"
},
"meta": { "requestId": "req_abc123" }
}/api/v1/workspace/usersList workspace users
Request
curl "https://api.viraly.io/api/v1/workspace/users" \
-H "Authorization: Bearer vly_your_api_key"Response
{
"data": [
{
"id": "l8Fx3zS4",
"name": "John Smith",
"email": "john@acme.com",
"role": "Owner",
"status": "Active",
"createdAt": "2025-06-01T00:00:00Z"
},
{
"id": "m0Gy5aT6",
"name": "Jane Doe",
"email": "jane@acme.com",
"role": "Member",
"status": "Active",
"createdAt": "2025-07-15T10:30:00Z"
}
],
"meta": { "requestId": "req_abc123" }
}
Social Sets
Social sets are logical groupings of channels (e.g., 'Client A', 'Marketing Team').
/api/v1/social-setssocial_sets:readList social sets
Request
Response
/api/v1/social-setssocial_sets:writeCreate a social set
Request
Response
/api/v1/social-sets/{id}social_sets:readGet a social set
Path Parameters
idstringSocial Set IDRequest
Response
/api/v1/social-sets/{id}social_sets:writeUpdate a social set
Path Parameters
idstringSocial Set IDRequest
Response