- Start with a rough objective.
- Enhance the objective with
POST /enhance-objective. - Create and submit a strategy.
- Poll until processing is complete (
status == 100). - Review holdings.
- Look up a company id from a symbol with
POST /helper/companies/search. - Fetch reasoning and evidence for a company.
- Craft exclusion phrases grounded in the holdings, then
PATCHthem onto the strategy. - Resubmit and repeat. Optionally generate an inverse objective with
POST /reverse-objectiveand run the same loop.
requests library.
All requests target the REST API base URL https://api.noonum.ai/v1 and authenticate with an
Authorization: Bearer <token> header, where the token is your Noonum API key.
See Authentication for details.
Premade strategies are read-only and cannot be refined.
Setup
Iterate a strategy until you’re happy
1. Start with an objective, then enhance it
2. Create a strategy from the enhanced objective
3. Submit the strategy for processing
4. Poll until processing is complete
See Build a strategy for how submit-and-poll works (status == 100
means processing finished).
5. Review companies in the strategy
id for fetching its reasoning and evidence.
6. Look up a company id from a symbol
If you have a symbol in mind (e.g."ABC") but don’t know the Noonum company id,
use POST /helper/companies/search.
7. Fetch evidence for a company in your strategy
This endpoint explains why a company is or isn’t in your strategy results:- If the company fits the strategy, you’ll see
isIncluded: true, a human-readablereasoning, andsummariescontaining the evidence excerpts. - If the company does not fit (or there isn’t enough supporting evidence), you’ll still
get a response with
isIncluded: false, a short “why not” message inreasoning, and typically an emptysummarieslist.
8. Craft exclusion phrases grounded in the holdings
An exclusion is a short phrase describing a category of companies you want removed. After you add exclusions and resubmit, the matching companies drop out and new companies may surface to replace them. Add an exclusion to remove a specific company you don’t want even if it’s otherwise relevant, or to remove a type of company such as a sector or business activity. Write each phrase as a short description of what a company is (2–6 words, no negation, no “exclude” prefix, no company names). See Build a strategy for the full exclusion rules. Ground the phrase in the holdings: look at the inclusion reasoning of the companies you want to remove, and describe the shared pattern.POST /exclusion-phrases turns a company’s evidence and reasoning into suggested phrases.
You can also write your own. Pass:
- your strategy
objective - the
companyIdyou’re reviewing - the company’s
inclusionReason(use thereasoningfield you just fetched)
9. Update the strategy with your exclusions, then resubmit
Create an inverse strategy objective
UsePOST /reverse-objective to generate an “inverse” strategy, then repeat the loop above.
POST /strategieswithinverse_nameandinverse_objectivePOST /strategies/{strategyId}/submit- poll
GET /strategies/{strategyId}untilstatus == 100 - review companies and evidence
- craft exclusions and
PATCH /strategies/{strategyId}with the updatedexclusions - resubmit and repeat
Generate historical results
1. Request historical data for specific month-end dates
2. Get available dates for download
3. Download historical results for one date
Where to go next
After refinement,GET /strategies/{strategyId}/factsheet (MCP server tool
get_strategy_factsheet) returns a presigned URL to a PDF summary of the updated strategy.
- Analyze strategies: filter, sort, and compare holdings.
- REST integration: wire the loop into your own application.
- MCP server: drive the same workflow from an agent.