Create business
Create a new business in your organization.
Send an Idempotency-Key header to make a retry safe (a resend with the same key returns the original business instead of creating a duplicate).
Errors: 401 authentication_required: API key or token is missing, invalid, or revoked. 403 permission_denied: Your plan does not include API access. 403 WORKSPACE_LIMIT_EXCEEDED: You hit your plan's workspace limit. Carries an upgrade_url (one-click "add a workspace" screen) and workspace_limit. 422 IDEMPOTENCY_KEY_CONFLICT: The Idempotency-Key was reused with a different body. 429 rate_limit_exceeded: You sent too many requests this minute.
Request
- Base URL: https://api.mymarky.ai
- URL: https://api.mymarky.ai/api/businesses
- Auth: HTTP bearer
Headers
Optional. Send a unique value (e.g. a UUID) to make this create request safe to retry. A repeat with the same key returns the original response instead of creating a duplicate. Cached for 24h, scoped to your org. Reusing a key with a different body returns 422.
Opt into a dated API version. Omit to stay on the floor (2026-04-08) forever — unpinned clients never break. Pin to a newer date (e.g. 2026-08-06) to receive the newest response shapes. Unknown values fall back to the floor. See https://docs.mymarky.ai for the versioning model.
Request body
Brand voice — the tone and personality Marky writes captions in (the 'Profile' field in the app).
The target audience the brand writes for — who the posts are meant to reach (the 'Target Audience' field in the app).
Extra rules Marky follows when writing captions. Put each rule on its own line (newline-separated) — do NOT write one long paragraph. The app shows each line as a separate rule chip, so a run-on paragraph renders as one un-editable blob. E.g. 'Never use emojis\nAlways end with a question\nKeep captions under 80 words'.
Text appended to the end of every generated caption (e.g. a hashtag block or a link).
A custom instruction injected into caption generation for this business.
A custom instruction injected into meme generation for this business.
A custom instruction injected into carousel generation for this business.
Free-text/markdown guidance on how this brand's graphics should be COMPOSED — which palette colour leads, how gradients are used, where the logo sits, whitespace, type treatment. Do NOT restate the raw brand tokens here (colours, fonts, logo file); those live in palettes / header_font / body_font / logo_url. This is the judgement the tokens can't express. SCOPE: it is added to the prompt for AI-GENERATED images and sets the look of theme covers. It does NOT reach a template design, so it will not change a batch generated from templates — for those, use palettes / header_font / body_font / logo_url, creative_types and include_stock. SIZE: 5000 characters, and writing this field REPLACES the whole value. Plan to the cap before composing; the response's field_budgets entry tells you how much room is left.
URL of a rendered 2x2 grid of four sample posts, all in ONE of the treatments from the design_style table — the first look the user kept when they ran /brand-setup. Written by /brand-setup at the end of that run; the app shows it so someone can SEE their look instead of reading it.
Social strategy doc as MARKDOWN — the goal we're working toward, what we're trying right now, what we won't do, cadence and mix, plus a running log of experiments and what we learned. This is the layer an agency revisits each quarter. Write plain markdown (## headings, - bullets, | tables |); the app renders it in a rich-text editor, so no HTML tags — they show up as literal text and spend the size budget without adding meaning. Keep the pillars themselves in topics, the brand voice in tone/audience_combined, and how graphics look in design_style; strategy holds what none of those can express — what we're trying to ACHIEVE and what we've learned. SIZE: 6000 characters, and writing this field REPLACES the whole doc. A longer value is still saved, but it comes back with a warning you have to act on in the same turn — so plan the doc to the cap BEFORE you compose it, rather than writing long and compacting after. The response's field_budgets entry for this field tells you exactly how much room is left.
Brand tagline shown on designs.
Call-to-action phrases Marky can use on designs (e.g. 'Call today', 'Book now').
URL of the brand logo.
Background color behind the logo on designs (hex, or '#00000000' for transparent).
Logo width in pixels, used when laying the logo onto designs.
Business name
Business description
Industry (e.g. 'Real Estate', 'Marketing Agency')
Business website URL
Content language, as an ISO 639-1 code (e.g. 'en') or English name (e.g. 'English'). Both accepted.
Response
Successful Response
Brand voice — the tone and personality Marky writes captions in (the 'Profile' field in the app).
The target audience the brand writes for — who the posts are meant to reach (the 'Target Audience' field in the app).
Extra rules Marky follows when writing captions. Put each rule on its own line (newline-separated) — do NOT write one long paragraph. The app shows each line as a separate rule chip, so a run-on paragraph renders as one un-editable blob. E.g. 'Never use emojis\nAlways end with a question\nKeep captions under 80 words'.
Text appended to the end of every generated caption (e.g. a hashtag block or a link).
A custom instruction injected into caption generation for this business.
A custom instruction injected into meme generation for this business.
A custom instruction injected into carousel generation for this business.
Free-text/markdown guidance on how this brand's graphics should be COMPOSED — which palette colour leads, how gradients are used, where the logo sits, whitespace, type treatment. Do NOT restate the raw brand tokens here (colours, fonts, logo file); those live in palettes / header_font / body_font / logo_url. This is the judgement the tokens can't express. SCOPE: it is added to the prompt for AI-GENERATED images and sets the look of theme covers. It does NOT reach a template design, so it will not change a batch generated from templates — for those, use palettes / header_font / body_font / logo_url, creative_types and include_stock. SIZE: 5000 characters, and writing this field REPLACES the whole value. Plan to the cap before composing; the response's field_budgets entry tells you how much room is left.
URL of a rendered 2x2 grid of four sample posts, all in ONE of the treatments from the design_style table — the first look the user kept when they ran /brand-setup. Written by /brand-setup at the end of that run; the app shows it so someone can SEE their look instead of reading it.
Social strategy doc as MARKDOWN — the goal we're working toward, what we're trying right now, what we won't do, cadence and mix, plus a running log of experiments and what we learned. This is the layer an agency revisits each quarter. Write plain markdown (## headings, - bullets, | tables |); the app renders it in a rich-text editor, so no HTML tags — they show up as literal text and spend the size budget without adding meaning. Keep the pillars themselves in topics, the brand voice in tone/audience_combined, and how graphics look in design_style; strategy holds what none of those can express — what we're trying to ACHIEVE and what we've learned. SIZE: 6000 characters, and writing this field REPLACES the whole doc. A longer value is still saved, but it comes back with a warning you have to act on in the same turn — so plan the doc to the cap BEFORE you compose it, rather than writing long and compacting after. The response's field_budgets entry for this field tells you exactly how much room is left.
Brand tagline shown on designs.
Call-to-action phrases Marky can use on designs (e.g. 'Call today', 'Book now').
URL of the brand logo.
Background color behind the logo on designs (hex, or '#00000000' for transparent).
Logo width in pixels, used when laying the logo onto designs.
Business ID
Business name
Business description
Industry category
Business website URL
Content language as an ISO 639-1 code (e.g. 'en', 'fr', 'es').
The user's customized per-platform caption-writing instructions (empty when none set). Keys are canonical platform names (e.g. 'instagram', 'linkedIn') plus 'common' (applies to all platforms). Follow the matching entry when writing a caption or platform_overrides caption — the user's instructions ALWAYS outrank generic platform best practices. Update via PATCH (merge semantics). Returned by get_business only, not the list endpoint.
Whether generated posts may use stock photos. True when never set, because stock is allowed by default. Set with update_business.
Default aspect ratio for generated designs ('1:1', '4:5' or '9:16'). Null when never set. Set with update_business.
Stored content-mix weights per creative format (keys: design, image-only, ai-image, gif, meme, video, carousel). Empty when never set, and generation then uses the default mix. Set with update_business.
The business's IANA timezone (e.g. 'Europe/Warsaw'). Posting-schedule slots and *_local times use it, and holidays in moments come from its country. Null when unset: times are then UTC and holidays default to the US. Set with update_business.
When the business was created
Last update time
Id of the undo record this write created. Pass it to revert_revisions to put the record back exactly as it was before this call. Set only on the response to a write; null when you read the record.
Changes
No recorded changes to this operation across all 1 revision of this API.