Yoobic Campaigns API

A campaign is the main structure used to send tasks to frontline teams and collect data about how they execute them. It is essentially a configurable form with instructions and fields (checklists, buttons, photos, open text, etc.) that users fill in from the field. They are used for many operational needs like audits, promotions, checklists, surveys, health and safety monitoring, and other day-to-day activities. There are 4 different types of campaigns available in YOOBIC: - Quick task - Memo - Form - Workflow Archived campaigns are visible in the [campaigns_archive](#group-campaigns_archive) table. ### Fields | Field | Type | Required | Readonly | OrderBy | Description | |----------------------|:-----------:|:--------:|:----------:|:-------:|---------------------------| |`campaign_id` | string | x | x | | Unique id of the campaign | |`title` | string | x | | | The campaign title | |`description` | string | | | | The campaign description | |`type` | string | x | | | The campaign type (mission, service, todo, poll, lesson, visit) | |`group_ids` | array | x | | | Group ids that can see this campaign | |`user_ids` | array | | | | User ids that can see this campaign | |`tags` | array | | | | The list of tags | |`scoring` | boolean | | | | true if scoring is enabled for missions from this campaign, false otherwise | |`recurring` | boolean | | | | true if this campaign is recurring, false if it is a one-off campaign | |`active` | boolean | | x | | true if campaign is neither paused nor archived | |`archived` | boolean | | x | | true if campaign is paused | |`icon_url` | string | | | | `_downloadURL` of a File or a `url` of a Photo. Icon size recommendation is 100px X 100px. | |`background_url` | string | | | | `_downloadURL` of a File or a `url` of a Photo. | |`page_titles` | array | | | | An ordered list of page titles i.e. first title is the first page title etc. | |`questions` | array | | | | The campaign's questions | |`created_date` | date | | x | | Creation date | |`updated_date` | date | | x | x | Last update date | The `questions` field is defined as an array of: | Field | Type | Description | |----------------------|----------------|---------------------------| |`question_id` | string | Unique id of the question | |`question_type` | string | The type of the question. Supported types: `text`, `textarea`, `toggle`, `checkbox`, `information`, `todo`, `photo`, `multiphotos`, `selectbuttons`, `select`, `selectmulti`, `address`, `date`, `number`, `starrating`, `image`. | |`question` | string | The title of the question | |`question_description`| string | The description of the question | |`mandatory` | boolean | If `true`, the question has to be answered. Defaults to `false` | |`page_number` | number | The number of the page the question appears in | |`question_number` | number | The number of the question | |`hide_mobile` | boolean | Hide the question on mobile devices. Defaults to `false`. | |`question_attributes` | object | Question attributes for specific question types.| The `question_attributes` field is defined as an object with the following fields: | Field | Type | Description | |----------------------|----------------|---------------------------| |`max_photos` | number | Maximum of allowed photos to upload. Applies only to questions of type `multiphotos`. | |`values` | array | Values to be displayed as options to choose from in the question. Applies only to questions of type `selectbuttons`, `select`, `selectmulti`. | |`min` | number | If present, value must be above or including it. Applies only to questions of type `number`. | |`max` | number | If present, value must be below or including it. Applies only to questions of type `number`, `starrating`. | #### Question Types **Important** Below is a list of the supported types and their value types: | question_type | Type | Description | |---------------|:--------------:|-------------| | address | string | | | date | string | | | information | string | | | select | string | Single value chosen from the `values` defined in `question_attributes` | | textarea | string | | | text | string | | | photo | URL | A valid image URL | | multiphotos | array of URLs | Valid image URLs and up to `max_photos` defined in `question_attributes` | | selectbuttons | array | Multiple values chosen from the `values` defined in `question_attributes` | | selectmulti | array | Multiple values chosen from the `values` defined in `question_attributes` | | number | number | Might have min, max borders as defined in `question_attributes` | | starrating | number | Might have max border as defined in `question_attributes`. No negatives allowed. | | checkbox | boolean | | | toggle | boolean | | | image | | This is a readonly property (informative) which does not have a value. | **Important** - If `page_titles` does not have a title for a given page then a default will be given - So i.e. if the values are - ```json [ "first chapter", "second chapter" ] ``` and there are three pages in total, then the title for the third page will be `Page 3`. - To filter on `live` campaigns only you should filter accordingly: ```json { "active": true, "archived": { "neq": true } } ```

Operations 15

GET /public/api/campaigns/{id} Get #
PATCH /public/api/campaigns/{id} Partial Update #
DELETE /public/api/campaigns/{id} Delete #
POST /public/api/campaigns Create #
POST /public/api/campaigns/{id}/publish Publish #
GET /public/api/campaigns/{id}/export?type={type}&filter={filter} Export data for a Campaign #
POST /public/api/campaigns/{id}/import?type={type} Import (update) data for a Campaign #
POST /public/api/campaigns/{id}/questions Create Question #
PUT /public/api/campaigns/{id}/questions/{question_id} Update Question #
DELETE /public/api/campaigns/{id}/questions/{question_id} Delete Question #
PUT /public/api/campaigns/{id}/stores Import audience #
POST /public/api/campaign-templates/import?type={type} Import new campaigns from template #
GET /public/api/campaigns?filter={filter} Get All #
GET /public/api/campaigns/count?where={where} Count #
GET /public/api/campaigns/export?type={type}&filter={filter} Export #

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/yoobic-campaigns-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

yoobic-campaigns-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: YOOBIC Public Campaigns API
  version: ''
  description: Welcome to the **YOOBIC Public API** documentation.
servers:
- url: https://<base_url>/
tags:


# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/yoobic/refs/heads/main/openapi/yoobic-campaigns-api-openapi.yml