curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/virality/submit-answers \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"answers": {
"goal": "Get the first 100 users",
"target_audience": "Freelance designers"
},
"social_url": "https://x.com/yourhandle"
}
'import requests
url = "https://app.base44.com/api/apps/{app_id}/virality/submit-answers"
payload = {
"answers": {
"goal": "Get the first 100 users",
"target_audience": "Freelance designers"
},
"social_url": "https://x.com/yourhandle"
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
answers: {goal: 'Get the first 100 users', target_audience: 'Freelance designers'},
social_url: 'https://x.com/yourhandle'
})
};
fetch('https://app.base44.com/api/apps/{app_id}/virality/submit-answers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/virality/submit-answers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'answers' => [
'goal' => 'Get the first 100 users',
'target_audience' => 'Freelance designers'
],
'social_url' => 'https://x.com/yourhandle'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/virality/submit-answers"
payload := strings.NewReader("{\n \"answers\": {\n \"goal\": \"Get the first 100 users\",\n \"target_audience\": \"Freelance designers\"\n },\n \"social_url\": \"https://x.com/yourhandle\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/apps/{app_id}/virality/submit-answers")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"answers\": {\n \"goal\": \"Get the first 100 users\",\n \"target_audience\": \"Freelance designers\"\n },\n \"social_url\": \"https://x.com/yourhandle\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/virality/submit-answers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"answers\": {\n \"goal\": \"Get the first 100 users\",\n \"target_audience\": \"Freelance designers\"\n },\n \"social_url\": \"https://x.com/yourhandle\"\n}"
response = http.request(request)
puts response.read_body{
"strategy_text": "Lead with the spreadsheet pain your audience already feels, then show the app solving it in one screen."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Submit answers
Submits your answers to the questions from Start social content flow and returns a content strategy to review.
Key each answer by the question id. Send social_url to match the writing voice of your own social profile. Answers replace any previously submitted for the app, and generating a new strategy discards the previous one. This endpoint fails with a 409 while a content plan is generating.
Accept the strategy by calling Generate content plan, or change it first with Refine content strategy.
This endpoint calls a language model, so expect it to take a few seconds. It shares a limit of 15 requests per minute with the other social content endpoints.
curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/virality/submit-answers \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"answers": {
"goal": "Get the first 100 users",
"target_audience": "Freelance designers"
},
"social_url": "https://x.com/yourhandle"
}
'import requests
url = "https://app.base44.com/api/apps/{app_id}/virality/submit-answers"
payload = {
"answers": {
"goal": "Get the first 100 users",
"target_audience": "Freelance designers"
},
"social_url": "https://x.com/yourhandle"
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
answers: {goal: 'Get the first 100 users', target_audience: 'Freelance designers'},
social_url: 'https://x.com/yourhandle'
})
};
fetch('https://app.base44.com/api/apps/{app_id}/virality/submit-answers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/virality/submit-answers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'answers' => [
'goal' => 'Get the first 100 users',
'target_audience' => 'Freelance designers'
],
'social_url' => 'https://x.com/yourhandle'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/virality/submit-answers"
payload := strings.NewReader("{\n \"answers\": {\n \"goal\": \"Get the first 100 users\",\n \"target_audience\": \"Freelance designers\"\n },\n \"social_url\": \"https://x.com/yourhandle\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/apps/{app_id}/virality/submit-answers")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"answers\": {\n \"goal\": \"Get the first 100 users\",\n \"target_audience\": \"Freelance designers\"\n },\n \"social_url\": \"https://x.com/yourhandle\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/virality/submit-answers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"answers\": {\n \"goal\": \"Get the first 100 users\",\n \"target_audience\": \"Freelance designers\"\n },\n \"social_url\": \"https://x.com/yourhandle\"\n}"
response = http.request(request)
puts response.read_body{
"strategy_text": "Lead with the spreadsheet pain your audience already feels, then show the app solving it in one screen."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Personal API key.
Path Parameters
ID of the app.
Body
Your answers, keyed by the id of each question returned by Start social content flow. Send at most 10. Answers longer than 2000 characters are truncated, and a key containing $ or . or longer than 200 characters is dropped.
Show child attributes
Show child attributes
{
"goal": "Get the first 100 users",
"target_audience": "Freelance designers"
}
HTTPS URL of your social profile, used to match the writing voice of the generated content. Omit it to skip voice matching.
500"https://x.com/yourhandle"
Response
Successful Response
The app's social content strategy after the change.
The content strategy, written as prose for you to review. Refine it with Refine content strategy, or accept it and call Generate content plan.
"Lead with the spreadsheet pain your audience already feels, then show the app solving it in one screen."
Was this page helpful?