curl --request POST \
--url http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"title": "<string>",
"google_ads_customer_id": 123,
"id": 123,
"status": "draft",
"date_added": "2023-11-07T05:31:56Z",
"date_updated": "2023-11-07T05:31:56Z",
"summary": "<string>",
"do_include_assistant_knowledge_item": false,
"config": {
"services": [
"<string>"
],
"location_ids": [
123
],
"language_id": 1000,
"website_url": "<string>"
},
"created_campaign_id": 123,
"keywords": [
{
"id": 123,
"keyword_text": "<string>",
"is_selected": true,
"avg_monthly_searches": 123,
"competition": "<string>",
"competition_index": 123,
"low_bid": "<string>",
"high_bid": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}(Re-)trigger keyword analysis for an existing analysis
Re-trigger keyword analysis for an existing market analysis.
This endpoint:
- Retrieves the existing market analysis with access verification
- Soft-deletes all existing keywords (is_active=False, is_deleted=True)
- Generates new keywords using the stored config_json parameters
- Saves the new keywords to the database
- Updates the analysis status to COMPLETED
- Returns the full MarketAnalysisSchema with keywords included
No status validation is performed - can trigger on any analysis regardless of current status (DRAFT, COMPLETED, or CAMPAIGN_CREATED).
curl --request POST \
--url http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/api/v1/market-analysis/analyses/{market_analysis_id}/trigger")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"title": "<string>",
"google_ads_customer_id": 123,
"id": 123,
"status": "draft",
"date_added": "2023-11-07T05:31:56Z",
"date_updated": "2023-11-07T05:31:56Z",
"summary": "<string>",
"do_include_assistant_knowledge_item": false,
"config": {
"services": [
"<string>"
],
"location_ids": [
123
],
"language_id": 1000,
"website_url": "<string>"
},
"created_campaign_id": 123,
"keywords": [
{
"id": 123,
"keyword_text": "<string>",
"is_selected": true,
"avg_monthly_searches": 123,
"competition": "<string>",
"competition_index": 123,
"low_bid": "<string>",
"high_bid": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
Query Parameters
Optional specific Token ID
Response
Successful Response
Schema for a market analysis.
Analysis title
Google Ads customer ID
Analysis ID
Analysis status (draft, completed, campaign_created)
draft, completed, campaign_created Creation timestamp
Last update timestamp
Summary/description of the market analysis
Whether to include assistant knowledge items for this analysis
Analysis configuration (can be empty on Market Analysis creation)
Show child attributes
Show child attributes
ID of created campaign if any
Associated keywords
Show child attributes
Show child attributes