Skip to main content
Core Platform

Hand a saved thematic universe to a draft model portfolio

POST /investment/themes/universes/{universe}/model-portfolio

Contract

Creates a draft model portfolio using thematic-relevance or equal weights. Existing model-portfolio governance approval remains mandatory before rebalance use; this endpoint does not place trades or create Financial Actions.

Authentication
Bearer credential required
Required scope
investment:run
Status
Published

Parameters

Name Location Type Required Description
universe path integer Yes

Request body

application/json · optional
{
    "name": "string",
    "limit": 20,
    "weighting": "relevance",
    "benchmark_symbol": "string"
}

Code examples

These examples compose a request only. Public reference pages never transmit your credential or execute the operation.

curl

curl -X POST \
  -H "Authorization: Bearer $FINANCEGPT_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  --data '{
    "name": "string",
    "limit": 20,
    "weighting": "relevance",
    "benchmark_symbol": "string"
}' \
  "https://financegpt.dev/api/v2/investment/themes/universes/{universe}/model-portfolio"

javascript

const response = await fetch("https:\/\/financegpt.dev\/api\/v2\/investment\/themes\/universes\/{universe}\/model-portfolio", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${FINANCEGPT_API_KEY}`,
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "string",
    "limit": 20,
    "weighting": "relevance",
    "benchmark_symbol": "string"
}),
});
const data = await response.json();

python

import json
import os
import requests

response = requests.request(
    'POST',
    'https://financegpt.dev/api/v2/investment/themes/universes/{universe}/model-portfolio',
    headers={
        'Authorization': 'Bearer ' + os.environ['FINANCEGPT_API_KEY'],
        'Accept': 'application/json',
    },
    json=json.loads('{"name":"string","limit":20,"weighting":"relevance","benchmark_symbol":"string"}'),
)
response.raise_for_status()
print(response.json())

php

<?php
$ch = curl_init('https://financegpt.dev/api/v2/investment/themes/universes/{universe}/model-portfolio');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('FINANCEGPT_API_KEY'),
        'Accept: application/json',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(array (
  'name' => 'string',
  'limit' => 20,
  'weighting' => 'relevance',
  'benchmark_symbol' => 'string',
)),
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Responses

Status Description
201 Draft model portfolio created with content hash and approval-required state
503 Thematic-universe handoff unavailable

Authority boundary

A developer credential proves application identity and permits only its scopes. It does not grant model promotion, policy override, QLM rebinding, or Financial Actions execution authority unless those separate controls are satisfied.

investment:run

Machine-readable sources