Structify structure API
The structure API from Structify — 8 operation(s) for structure.
The structure API from Structify — 8 operation(s) for structure.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/structify-structure-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
contact:
email: team@structify.ai
name: Structify Team
description: Every enterprise's data team.
license:
name: Discuss directly with founders for license.
url: https://structify.ai
title: Structify account Structure API
version: 0.1.0
servers:
- description: Production server
url: https://api.structify.ai
- description: Local server
url: http://localhost:8080
security:
- api_key: []
- session_token: []
tags:
- name: structure
paths:
/jobs/status_aggregated:
post:
description: 'Returns counts of jobs by status (completed, running, failed, queued).
Exactly one of job_ids or dataset_name must be provided.
This endpoint can handle large numbers of job IDs since it returns aggregated data instead of individual job details.'
operationId: jobs_status_aggregated
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AggregatedJobRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/JobCount'
description: Aggregated status counts for specified jobs.
'400':
description: Bad request - exactly one of job_ids or dataset_name must be provided.
security:
- api_key: []
- session_token: []
summary: Get aggregated status counts for multiple jobs.
tags:
- structure
/structure/enhance_property:
post:
description: Returns a job id that can be waited on until the request is finished.
operationId: structure_enhance_property
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EnhancePropertyParams'
required: true
responses:
'200':
content:
text/plain:
schema:
type: string
description: The job id.
security:
- session_token: []
- api_key: []
summary: enhance_property a given entity by searching specifically for a certain missing property.
tags:
- structure
/structure/enhance_relationship:
post:
description: Returns a job id that can be waited on until the request is finished.
operationId: structure_enhance_relationship
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EnhanceRelationshipParams'
required: true
responses:
'200':
content:
text/plain:
schema:
type: string
description: The job id.
security:
- session_token: []
- api_key: []
summary: Enhance relationships between entities by searching for missing connections.
tags:
- structure
/structure/find_relationship:
post:
operationId: structure_find_relationship
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FindRelationshipParams'
required: true
responses:
'200':
content:
text/plain:
schema:
type: string
description: The job id.
security:
- session_token: []
- api_key: []
summary: Attempt to find the given relation between two entities.
tags:
- structure
/structure/is_complete:
post:
operationId: structure_is_complete
requestBody:
content:
application/json:
schema:
items:
type: string
type: array
required: true
responses:
'200':
content:
text/plain:
schema:
type: string
description: All tasks finished.
security:
- api_key: []
- session_token: []
summary: Wait for all specified async tasks to be completed.
tags:
- structure
/structure/job_status:
post:
description: If only dataset_name is provided, up to 1000 of the most recent jobs for that dataset will be returned.
operationId: structure_job_status
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JobRequest'
required: true
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/JobNotification'
type: array
description: Status of all specified jobs.
security:
- api_key: []
- session_token: []
summary: Get status for specified jobs with detailed information similar to websocket endpoint.
tags:
- structure
/structure/pdf:
post:
description: 'For single mode, creates one job for the entire PDF.
For batch mode, creates one job per PDF page.'
operationId: structure_pdf
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StructurePdfRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/StructurePdfResponse'
description: List of created job IDs
security:
- api_key: []
- session_token: []
summary: Structure a PDF document into the given dataset.
tags:
- structure
/structure/run_async:
post:
description: Returns a token that can be waited on until the request is finished.
operationId: structure_run_async
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RunRequestParams'
required: true
responses:
'200':
content:
text/plain:
schema:
type: string
description: The job id.
security:
- api_key: []
- session_token: []
summary: Structure an unstructured data source into the given dataset in an async fashion.
tags:
- structure
components:
schemas:
EnhancePropertyParams:
allOf:
- $ref: '#/components/schemas/EnhancePropertyArgs'
- properties:
node_id:
allOf:
- $ref: '#/components/schemas/WorkflowSessionNodeId'
type: object
WebSearch:
properties:
banned_domains:
items:
type: string
type: array
starting_searches:
items:
type: string
type: array
starting_urls:
items:
type: string
type: array
type: object
EnhanceRelationshipArgs:
allOf:
- $ref: '#/components/schemas/WebSearch'
- properties:
allow_extra_entities:
type: boolean
entity_id:
$ref: '#/components/schemas/EntityId'
relationship_name:
type: string
required:
- entity_id
- relationship_name
type: object
JobStatus:
enum:
- Queued
- Running
- Completed
- Failed
type: string
LLMRelationship:
additionalProperties: false
properties:
properties:
additionalProperties:
$ref: '#/components/schemas/BasicPropValue'
type: object
source:
minimum: 0
type: integer
target:
minimum: 0
type: integer
type:
type: string
required:
- type
- source
- target
type: object
PDFIngestor:
additionalProperties: false
description: Ingest all pages of a PDF and process them independently.
properties:
page:
format: int32
minimum: 0
type:
- integer
- 'null'
path:
type: string
required:
- path
type: object
FindRelationshipArgs:
allOf:
- $ref: '#/components/schemas/WebSearch'
- properties:
allow_extra_entities:
type: boolean
from_id:
$ref: '#/components/schemas/EntityId'
relationship_name:
type: string
to_id:
$ref: '#/components/schemas/EntityId'
required:
- from_id
- to_id
- relationship_name
type: object
JobTarget:
properties:
entity_id:
$ref: '#/components/schemas/EntityId'
property_names:
items:
type: string
type:
- array
- 'null'
relationship_name:
type:
- string
- 'null'
required:
- entity_id
type: object
LLMEntity:
additionalProperties: false
properties:
id:
minimum: 0
type: integer
properties:
additionalProperties:
$ref: '#/components/schemas/BasicPropValue'
type: object
type:
type: string
required:
- id
- type
- properties
type: object
StructurePdfRequest:
additionalProperties: false
properties:
dataset:
type: string
instructions:
type:
- string
- 'null'
model:
type:
- string
- 'null'
node_id:
allOf:
- $ref: '#/components/schemas/WorkflowSessionNodeId'
pages:
items:
format: int32
minimum: 0
type: integer
type:
- array
- 'null'
path:
type: string
required:
- path
- dataset
type: object
EnhancePropertyArgs:
allOf:
- $ref: '#/components/schemas/WebSearch'
- properties:
allow_extra_entities:
type: boolean
entity_id:
$ref: '#/components/schemas/EntityId'
property_name:
type: string
required:
- entity_id
- property_name
type: object
RunRequestParams:
additionalProperties: false
properties:
dataset:
type: string
instructions:
type:
- string
- 'null'
model:
type:
- string
- 'null'
node_id:
allOf:
- $ref: '#/components/schemas/WorkflowSessionNodeId'
save_requirement:
items:
$ref: '#/components/schemas/SaveRequirement'
type: array
seeded_entity:
$ref: '#/components/schemas/LLMKnowledgeGraph'
source:
$ref: '#/components/schemas/Input'
required:
- source
- dataset
type: object
RequiredEntity:
additionalProperties: false
properties:
entity_id:
allOf:
- $ref: '#/components/schemas/EntityId'
seeded_entity_id:
description: The integer id corresponding to an entity in the seeded entity graph (different from the global dataset entity id)
minimum: 0
type: integer
required:
- seeded_entity_id
type: object
JobNotification:
properties:
dataset_name:
type: string
job_id:
$ref: '#/components/schemas/JobId'
status:
allOf:
- $ref: '#/components/schemas/JobStatus'
target:
allOf:
- $ref: '#/components/schemas/JobTarget'
required:
- dataset_name
- job_id
type: object
JobCount:
properties:
completed:
format: int64
type: integer
failed:
format: int64
type: integer
queued:
format: int64
type: integer
running:
format: int64
type: integer
total:
format: int64
type: integer
required:
- total
- completed
- failed
- running
- queued
type: object
AggregatedJobRequest:
properties:
dataset_name:
type:
- string
- 'null'
job_ids:
items:
$ref: '#/components/schemas/JobId'
type:
- array
- 'null'
node_id:
allOf:
- $ref: '#/components/schemas/WorkflowSessionNodeId'
type: object
RequiredProperty:
additionalProperties: false
properties:
property_names:
description: If there are multiple properties, it can match just one of them
items:
type: string
type: array
table_name:
description: The table name of the entity to update
type: string
required:
- table_name
- property_names
type: object
SaveRequirement:
description: It's an OR statement across these.
oneOf:
- $ref: '#/components/schemas/RequiredRelationship'
- $ref: '#/components/schemas/RequiredEntity'
- $ref: '#/components/schemas/RequiredProperty'
StructurePdfResponse:
properties:
job_ids:
items:
$ref: '#/components/schemas/JobId'
type: array
required:
- job_ids
type: object
Input:
oneOf:
- properties:
PDF:
$ref: '#/components/schemas/PDFIngestor'
required:
- PDF
type: object
- properties:
Web:
$ref: '#/components/schemas/WebSearch'
required:
- Web
type: object
EntityId:
format: uuid
type: string
BasicPropValue:
oneOf:
- type: string
- format: int64
type: integer
- type: boolean
- format: double
type: number
FindRelationshipParams:
allOf:
- $ref: '#/components/schemas/FindRelationshipArgs'
- type: object
RequiredRelationship:
additionalProperties: false
properties:
relationship_name:
type: string
required:
- relationship_name
type: object
JobRequest:
properties:
dataset_name:
type:
- string
- 'null'
job_ids:
items:
$ref: '#/components/schemas/JobId'
type:
- array
- 'null'
type: object
WorkflowSessionNodeId:
format: uuid
type: string
LLMKnowledgeGraph:
additionalProperties: false
description: 'Knowledge graph info structured to deserialize and display
in the same format that the LLM outputs.
Also the first representation of an LLM output in the pipeline from raw tool output to being merged into a DB'
properties:
entities:
items:
$ref: '#/components/schemas/LLMEntity'
type: array
relationships:
items:
$ref: '#/components/schemas/LLMRelationship'
type: array
required:
- entities
type: object
EnhanceRelationshipParams:
allOf:
- $ref: '#/components/schemas/EnhanceRelationshipArgs'
- properties:
node_id:
allOf:
- $ref: '#/components/schemas/WorkflowSessionNodeId'
type: object
JobId:
format: uuid
type: string
securitySchemes:
api_key:
in: header
name: api_key
type: apiKey
session_token:
scheme: bearer
type: http