enable_parallel_tool_calls (boolean, default true). When enabled, supported models can execute multiple tools in one turn.gpt-6-astra to the agent LLM options.gpt-image-2.5-flare and gpt-image-2.5-sunburst. Both models accept up to 10 reference images, quality levels through max, 14 fixed aspect ratios plus auto, and 1K, 2K or 4K output.cascade_timeout_seconds (number, 2–15, default 4) to control how long ElevenLabs waits for an upstream speech engine before retrying.is_final_audio_for_turn marker is now emitted after every buffered byte for that turn, including MP3 and Opus output. Clients can use the marker as an exact turn boundary without switching to PCM.transcriptEdit to the realtime Speech to Text wrapper, with edited text delivered through edited_transcript events. Fixed Speech Engine JWT verification for API keys with data residency suffixes. Added phoneNumbers.listV2 and Flows template methods to list and get templates and list, create and get runs. Regenerated clients and types for GPT Image 2.5, Slack agent alerting, parallel tool calls, gpt-6-astra, service account API key concurrency limits, Music zero retention, conversation filters and MCP tool approval statuses.transcript_edit to the realtime Speech to Text wrapper, with edited text delivered through edited_transcript events. Fixed Speech Engine JWT verification for API keys with data residency suffixes, and made play raise an error when ffplay fails. Added phone_numbers.list_v2 and Flows template methods to list and get templates and list, create and get runs. Regenerated clients and types for GPT Image 2.5, Slack agent alerting, parallel tool calls, gpt-6-astra, service account API key concurrency limits, Music zero retention, conversation filters and MCP tool approval statuses.--intent metadata to collect feedback on CLI usage. Added elevenlabs feedback missing-capability to report workflows that the CLI does not support.GET /v1/convai/v2/phone-numbers
page_size (integer, 1–1,000, default 100) and cursor (nullable string) pagination parameters.search, label, phone_number, provider, supports_outbound, agent_id, branch_id, sort_by and sort_direction filters. sort_by accepts label or phone_number; sort_direction defaults to asc.phone_numbers (array), optional nullable next_cursor (string) and has_more (boolean, default false).enable_parallel_tool_calls (boolean, default true). Workflow overrides accept a nullable boolean.LLM enum adds gpt-6-astra, including conversation initiation overrides.integration_type to select pagerduty or slack. Slack notifiers require connection_id and channel_id (strings); channel_id accepts 1–64 characters.data_collection_params no longer accepts the missing operator. Use an empty value to match conversations where the field was not collected.dynamic_variable_params matches conversations where the variable was not set.cascade_timeout_seconds (number, 2–15). Create requests default to 4, update requests accept a nullable value and responses require the field.POST /v1/flows/image
gpt-image-2.5-flare and gpt-image-2.5-sunburst.prompt and model_id, accept up to 10 images, and add resolution (1K, 2K or 4K, default 1K).quality accepts low, medium, high, xhigh or max and defaults to high. aspect_ratio accepts auto and 14 fixed ratios and defaults to 16:9.POST /v1/dubbing/project
keyterms accepts repeated fields or a single JSON array.webhook_ids accepts repeated fields, a single JSON array or a comma-separated string.WorkspaceResourceType adds dubbing_project.POST /v1/convai/knowledge-base/crawl
max_depth (integer, default 3). The field is now a no-op and no longer has minimum or maximum constraints.max_depth.gbp.audio and final messages now define is_final_audio_for_turn as occurring after all buffered bytes for the turn have been delivered.queue_status events until they are admitted or time out. New API methods upload or delete custom hold audio.gemini-3.8-flash. WhatsApp account responses identify whether the account uses the Cloud API or coexistence signup flow.music_v2_5. Composition plan generation chunks support up to 6,132 characters, with up to 30 lines of 200 characters each.gemini-3.8-flash and music_v2_5.gemini-3.8-flash and music_v2_5. The compose_detailed wrapper now accepts every generated music model ID and both prompt- and chunk-based composition plans.response_id instead of event_id, preserving multiple responses around tool calls and preventing streamed parts or corrections from attaching to the wrong message.--intent metadata to generated API commands. Added elevenlabs feedback missing-capability to report workflows that the CLI does not support.user_activity events to once per second and clears the limit when a session ends.POST /v1/convai/agents/{agent_id}/hold-audio
hold_audio_file (binary) as multipart form data. The file must be MP3 or WAV, up to 40 MB and 180 seconds.agent_id (string) and hold_audio (AgentHoldAudioConfig). The hold-audio object requires audio_path, audio_url, original_filename (strings), duration_secs (number) and size_bytes (integer).DELETE /v1/convai/agents/{agent_id}/hold-audio
agent_id (string).platform_settings.queueing_config (AgentQueueingConfig) with enabled (boolean, default false) and wait_timeout_seconds (integer, 1–1,800, default 180).hold_audio (AgentHoldAudioConfig). Agent responses also include optional default_hold_audio_url (string).GET /v1/convai/conversations/{conversation_id}
queue_wait_secs (number). Queue time is excluded from call_duration_secs and billed time.POST /v1/convai/agents/{agent_id}/branches
include_draft (boolean, default false). When true, a branch created from the branch tip includes the caller’s draft procedure set.referenced_tool_ids, referenced_kb_ids, referenced_procedure_ids and referenced_dynamic_variables (string arrays).procedures, a map keyed by procedure ID.GET /v1/convai/test-invocations
search (string) to filter tests and folders by name.version_id (string) and optional ran_against_draft (boolean, default false).runs_diverged_from_version (boolean, default false).POST /v1/convai/agents/{agent_id}/knowledge-base/rag-query
max_documents_length (integer, 1–50,000) and max_retrieved_rag_chunks_count (integer, 1–20) query-specific overrides.GET /v1/convai/whatsapp-accounts/{phone_number_id}
account_type (WhatsAppAccountType, default cloud_api). Values are cloud_api and coexistence.POST /v1/convai/agent/{agent_id}/llm-usage/calculate
LLMUsageCalculatorLLMResponseModel adds required price_per_message (number).MusicModelID adds music_v2_5 for POST /v1/music/video-to-music, POST /v1/music/plan, Compose music, POST /v1/music/detailed, POST /v1/music/detailed/stream, POST /v1/music/stream, POST /v1/music/upload and POST /v1/music/finetunes.GenerationChunk.text increases maxLength from 6,000 to 6,132 characters for POST /v1/music/plan, POST /v1/music, POST /v1/music/detailed, POST /v1/music/detailed/stream, POST /v1/music/stream and POST /v1/music/upload. Section names can contain 1–100 characters, and chunks can contain up to 30 lines with 200 characters per line.queue_status. Its required queue_status_event.status accepts waiting, admitted or timed_out; timed_out precedes WebSocket close code 4300. Hold audio continues to arrive as regular audio events.LLM enum adds gemini-3.8-flash, including conversation initiation overrides.start_procedure_success, start_procedure_error, end_procedure_success and end_procedure_error.FeaturesUsageCommonModel adds optional freeform_procedure and structured_procedure feature statuses.Scribe v2 Medical is now generally available. It is a batch speech recognition model specialized for medical and clinical audio, billed at the same rate as Scribe v2.
Pass scribe_v2_medical as model_id on Create transcript. Keyterm prompting, entity detection, speaker diarization, and no-verbatim mode work the same way as Scribe v2.
dynamic_variable_params filters. Use name:op:value with eq, gt, gte, lt or lte; comparison operators require numeric values.twilio_machine_detection. Choose enable for an early human-or-machine verdict or detect_message_end to wait for a voicemail greeting to finish. Results arrive through the new answering_machine_detection webhook event.allowed_values to name a dynamic variable containing the permitted values. The previous allowed_values_dynamic_variable field is deprecated.voice_id.source_url, containing the tracked URL for URL documents.agent_response WebSocket events now include optional attachments. Each attachment requires url and name and can include mime_type.platform_limits for credits, Professional Voice Clones, and TTS, Dubbing, and Music concurrency.dynamicVariableParams to conversation listing and text search requests. Regenerated types for Twilio answering machine detection, data collection value constraints, API key platform limits, agent branch draft metadata and knowledge base source URLs.dynamic_variable_params to synchronous and asynchronous conversation listing and text search methods. Regenerated types for Twilio answering machine detection, data collection value constraints, API key platform limits, agent branch draft metadata and knowledge base source URLs. The real-time text-to-speech client no longer passes the internal omit sentinel to the connection.elevenlabs say command and its agent skill, regenerated API command bindings and made eleven_v3 the default TTS model.MessageAttachment from @elevenlabs/client so consumers can import the type directly.onMessage and added the optional webRtc.singlePeerConnection session setting. The widget also localizes greeting buttons and fixes dropped or duplicated text-chat responses.GET /v1/convai/triage-tickets
page_size (integer, 1–100, default 100), status (AgentConversationTicketStatus), assignee_user_id (string or unassigned) and cursor (string) query parameters.GetAgentConversationTicketsPageResponseModel.GET /v1/convai/conversations
dynamic_variable_params (repeatable string array). Each value uses name:op:value, where op is eq, gt, gte, lt or lte.GET /v1/convai/conversations/messages/text-search
dynamic_variable_params (repeatable string array) with the same syntax.telephony_call_config now uses separate input and output schemas.twilio_machine_detection (TwilioMachineDetectionConfig). Its mode accepts enable or detect_message_end and defaults to enable. The setting is ignored for non-Twilio providers and inbound calls.POST /v1/convai/phone-numbers
account_auth_token (string) for Twilio API key imports to validate inbound webhook signatures.WebhookEventType adds answering_machine_detection.AgentBranchSummary adds optional nullable draft_created_at (integer) and optional draft_is_behind_tip (boolean, default false).AgentKnowledgeBaseRagChunkResponseModel adds required nullable source_url (string).AgentSummaryResponseModel and SpeechEngineSummaryResponse add required voice_id (string).AnalysisProperty adds optional nullable name (string) and allowed_values (AllowedValues). LiteralJsonSchemaProperty also adds allowed_values. Both deprecate allowed_values_dynamic_variable.DataCollectionResultCommonModel adds optional nullable name (string).WorkspaceApiKeyResponseModel adds optional nullable platform_limits (PlatformLimits).Icon adds optional nullable theme (light or dark).SMBToolConfig adds send_custom_email, create_service_quote_request and create_product_quote_request parameter variants.agent_response WebSocket events add optional attachments (array). Each item requires url and name (strings) and accepts optional mime_type (string).ReferenceVideo.studio_clip now uses StudioClipLocator instead of StudioClipReference. The fields and wire format are unchanged.dtmf_input_settings for DTMF input. Configure the digit timeout, use # as a terminator and redact keypad entries from transcripts, logs and analysis.file_inputs, an array containing every attached file’s ID, name, MIME type and URL.tags query parameter. Repeat the parameter to match agents with any of the supplied tags.campaign metadata containing the required campaign_id and campaign_lead_id.with_waveform_visual (boolean, default false). Opted-in responses return a low-resolution waveform_visual integer array with four samples per second.page_size to 1–100. Project status filtering includes queued, and both endpoints document using next_cursor to retrieve the next page.fileIds to sendMultimodalMessage, allowing one message to include multiple file attachments.file_ids to send_multimodal_message, allowing one message to include multiple file attachments.onUnhandledClientToolCall callback when wiring session events. Unhandled client tool calls that expect a response now receive the automatic error response instead of remaining unresolved.cmd/<command> to the CLI User-Agent, allowing requests from workflows such as agents push and agents create to be distinguished.fileIds to sendMultimodalMessage. The client sends both file and files fields for compatibility, and React exposes the updated client API.GET /v1/convai/agents
tags (string array). Repeat the query parameter to match any supplied tag.conversation_config.conversation.dtmf_input_settings (DTMFInputConfig). It supports dtmf_input_timeout (number, 0.5–10 seconds, default 2), hash_terminator (boolean, default true) and redact_input (boolean, default false).sip_refer_play_dialtone (boolean, default true) to phone-number transfer configuration. Set it to false to keep the original call leg silent while a SIP REFER transfer completes.ProcedureVersionRef or a ProcedureDraftRef. Draft references require procedure_id (string) and set version_id to null.GET /v1/convai/conversations/{conversation_id}
file_inputs (array of ConversationHistoryTranscriptFileInputResponseModel) to transcript entries. Each item requires file_id, original_filename, mime_type and file_url (strings).campaign (BatchCallingCampaignInformation) to batch-call metadata. The object requires campaign_id and campaign_lead_id (strings).dtmf to ChatSourceMedium.incorrect_information, documentation_gap, platform_bug and wrong_action.POST /v1/music/detailed) and Stream music with details (POST /v1/music/detailed/stream)
with_waveform_visual (boolean, default false).waveform_visual (integer array), sampled four times per second from -1000 to 1000.POST /v1/music/upload
with_waveform_visual (boolean, default false) and nullable waveform_visual (integer array) in the response.quality_preset now accepts null, and its standard schema default was removed.GET /v1/dubbing/project
page_size remains an optional integer with default 20, but values are now clamped to 1–100 instead of rejected.status filter now documents queued, preparing, ready and failed.next_cursor in cursor; omit it for the first page.GET /v1/dubbing/project/{project_id}/language
page_size remains an optional integer with default 20, but values are now clamped to 1–100 instead of rejected.status filter supports queued, processing, completed, stale and failed.next_cursor in cursor; omit it for the first page.PendingSubscriptionSwitchResponseModel.next_tier adds grant.The ElevenLabs CLI v1.0.0 is now available. Every ElevenLabs API operation is available as a subcommand, with JSON, table, YAML and CSV output, automatic pagination and shell completion.
The CLI also provides local configuration workflows for ElevenAgents. Store agent, tool and test configurations as files, synchronize them with push and pull commands, manage branches, run tests, install ElevenLabs UI components and select a data residency region.
Procedures are now generally available in ElevenAgents. A procedure contains task-specific instructions and a trigger that determines when they apply. During a conversation, the agent loads the relevant procedure, allowing one agent to handle distinct tasks without placing every instruction in its system prompt.
Use free-form procedures when the agent can adapt the wording or order of instructions. Use structured procedures when steps must run in a defined order. Both types can be used alongside workflows on the same agent.
context_usage event after each completed agent turn. The event reports the model, prompt token count and model context limit.keyterms and Dubbing webhook_ids.expects_response handling and type-safe tool results. WebRTC startup now becomes ready when the agent joins instead of waiting for audio-track subscription. The release also hardens URL handling, suppresses unknown-event noise and removes realtime-thread allocation from software mute processing.@elevenlabs/react-native.webRtc.iceTransportPolicy. Set it to relay to restrict WebRTC ICE candidates to TURN relays on networks that block direct UDP traffic.onContextUsage callback and ContextUsageEvent type. React exposes the callback through useConversation. React Native now resolves through its package export condition instead of browser-global detection.onExternalAgentDisconnected and onMCPToolApprovalRequest. WebRTC now uses the selected input device, preserves mute state when switching microphones and fails setup if initiation data cannot be sent. The widget adds concurrency queue status, optional language selection on the collapsed trigger and first-message rendering for agents that support both text and voice.POST /v1/convai/triage-tickets. The request requires conversation_id (string) and accepts qa_comment (nullable string, 1–10,000 characters) and up to 200 turn comments.GET /v1/convai/agents/{agent_id}/triage-tickets, with cursor pagination.POST /v1/convai/agents/{agent_id}/triage-tickets. The request requires qa_comment (string, 1–10,000 characters).GET /v1/convai/agents/{agent_id}/triage-tickets/assignable-users. The response lists non-service-account workspace members and whether each member has access to the agent.GET /v1/convai/triage-tickets/{agentqa_ticket_id}.PATCH /v1/convai/triage-tickets/{agentqa_ticket_id}. The request accepts optional status and nullable assignee_user_id.DELETE /v1/convai/triage-tickets/{agentqa_ticket_id}.POST /v1/convai/triage-tickets/{agentqa_ticket_id}/comments. The request requires comment (string, 1–10,000 characters).POST /v1/convai/triage-tickets/{agentqa_ticket_id}/turn-comments. The request requires zero-based turn_index (integer) and comment (string, 1–10,000 characters).GET /v1/convai/conversation/get-signed-url
debug_events_request (boolean, default false). Debug events require editor access to the agent.GET /v1/convai/conversation/token
debug_events_request (boolean, default false). The legacy GET /v1/convai/conversation/get_signed_url route accepts the same parameter.GET /v1/convai/conversations
triggered_procedure_ids (nullable string array, maximum 50) to match conversations where any specified procedure ran.include_invalid_tool_calls (boolean, default false) to include tool calls that did not run.sort_direction (asc or desc, default desc) for call start time.GET /v1/convai/conversations/messages/text-search
triggered_procedure_ids (nullable string array, maximum 50).include_invalid_tool_calls (boolean, default false).GET /v1/convai/agents/{agent_id}/topics
include_evaluation_criteria (boolean, default true).frustration to sort_by.success_rate (number), while the overall response adds aggregated_run_count (integer, default 0).from_unix_secs is floored to the start of its UTC day. A bounded range aggregates completed daily discovery runs; omitting both bounds returns the latest run.GET /v1/convai/agents/{agent_id}/branches/{branch_id}/procedures) and Get procedure (GET /v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id})
agent_version_id (string) to retrieve procedures from a specific agent version.environment (string) to response, simulation and tool-call unit test schemas. The value selects environment-specific URLs, headers and auth connections; it defaults to production.minimum_frequency_days (integer, 1–180) for auto-sync. The default is 7, and a stricter parent-folder frequency takes precedence.GET /v1/music/finetunes
page_size from 100 to 150. The default remains 50.procedures (object<string, ProcedureVersionRef>). Each value requires procedure_id and version_id (strings). An empty object removes all procedures.enable_procedure_ids_from_client (boolean, default false). Initiation data adds optional nullable procedure_ids (string array); an empty array disables all procedures for the starting agent.ClientEvent adds context_usage.additional_soft_timeout_messages (string array).null.mic_muting_enabled and transcript_enabled changed from false to true. Set them explicitly to false to preserve the previous behavior.xi_api_key from UserResponseModel.ResourceMetadataResponseModel.role_to_group_ids now accepts custom role IDs as keys instead of restricting keys to admin, editor, commenter and viewer.restricted_to_user_email_domains (string array).go to next_tier.https://api.elevenlabs.io/v1/mcp, signs in with your ElevenLabs account through OAuth and requires no local installation or API key. See the hosted MCP server documentation for setup instructions for Claude, Cursor and other MCP clients.pending, generating, completed and failed states, and requests can include a webhook target for completion events.max_messages query parameter is an integer from 1 to 200 (default 40); longer conversations set messages_omitted to true. Useful for agents that need to preserve context.page_size (integer, 1–100), cursor (string), sort_by (conversations, sentiment or success_rate) and sort_direction (asc or desc). Responses add has_more and nullable next_cursor.queueing (AgentQueueingConfig). Set enabled to true to hold callers when the agent reaches its concurrency limit; wait_timeout_seconds is an integer up to 1,800 (default 180).merge_with_default_ignore_terms (boolean, default false) to combine custom interruption terms with curated defaults. Soft timeouts add disable_until_first_user_message (boolean, default false), and workflow tool locators add optional schema_overrides for per-node parameter overrides.BackgroundSoundConfig.volume now defaults to 0.15 instead of 0.6, and crossfade_loop now defaults to true instead of false. Set these fields explicitly to retain the previous behavior.client.assets for uploading, listing, retrieving and deleting assets, plus client.flows for asynchronous video, image and speech generation. Turn configuration adds mergeWithDefaultIgnoreTerms. Removed CustomToolApiSchemaConfig and scimExternalId from WorkspaceGroupResponseModel.merge_with_default_ignore_terms in turn configuration. On-prem session setup adds extra_setup_config for passing additional setup-message fields.disconnected consistently and prevents late callbacks from clearing a newer session. The widget renders quick replies and links inline, restores Markdown in voice transcripts and fixes language menu positioning inside container-query layouts.useScribe reconnection.POST /v1/flows/videoGET /v1/flows/videoGET /v1/flows/video/{generation_id}POST /v1/flows/imageGET /v1/flows/imageGET /v1/flows/image/{generation_id}POST /v1/flows/text-to-speechGET /v1/flows/text-to-speechGET /v1/flows/text-to-speech/{generation_id}POST /v1/assetsGET /v1/assetsGET /v1/assets/{asset_id}DELETE /v1/assets/{asset_id}GET /v1/convai/conversations/{conversation_id}/summary
max_messages (integer, 1–200, default 40)GetConversationSummaryResponseModel with required conversation_id, agent_id, status, message_count and notemessages contain only role (user or agent) and message; conversations over the limit return messages_omitted: trueGET /v1/convai/analytics/live-count
agent_ids (string array, maximum 25), which takes precedence over agent_idGET /v1/convai/agents/{agent_id}/topics
page_size (integer, 1–100), cursor (string), sort_by (conversations, sentiment or success_rate) and sort_direction (asc or desc)has_more (boolean, default false) and nullable next_cursor (string)queueing (AgentQueueingConfig) to agent platform settings. It contains enabled (boolean, default false) and wait_timeout_seconds (integer greater than 0 and at most 1,800, default 180)schema_overrides to WorkflowToolLocator; per-node constant, dynamic variable, LLM or omit overrides take precedence over tool-level overridesmerge_with_default_ignore_terms (boolean, default false) to turn configuration and related override schemasdisable_until_first_user_message (boolean, default false) to soft-timeout configuration and related override schemasstatus (success, error, blocked or skipped) to realtime agent tool response eventsavaya to conversation initiation sources and avaya_api_key to authorization methodsgemini-3.6-flash and gemini-3.7-flash to supported agent LLM valuesBackgroundSoundConfig.volume default from 0.6 to 0.15 and crossfade_loop default from false to trueCustomToolApiSchemaConfig; generated SDK users importing this type must remove the importscim_external_id from WorkspaceGroupResponseModelDubbing v2 is now available through the API. It translates audio and video into more than 90 languages while preserving each speaker’s voice, tone and pacing.
The new project-based API keeps source transcripts and translations as editable JSON. Create a project from a file or URL, add one or more target languages, edit individual transcript segments or translations, then regenerate only the regions that changed. Follow the Dubbing quickstart to create your first dub.
guardrail_types (GuardrailType[]) and custom_guardrail_names (string array) query parameters. The existing conversation hierarchy can now be filtered with optional parent_conversation_id (string).include_commit_status (boolean, default false). When enabled, branch summaries include nullable commits_ahead, commits_behind and merged_into_branch_id fields.max_duration_seconds and pronunciation_dictionary_locators. MCP server configuration adds request_meta for passing MCP _meta values to tool calls, and webhook tool timeouts now support up to 300 seconds.analysis breakdown with per-feature running totals and run snapshots. Transcript messages add triggered_guardrails, and conversation turns add optional producing_llm.gender, age, language, accent, use_cases, min_notice_period_days, include_custom_rates, include_live_moderated and high_quality query parameters.audio_format parameters and inclusive VAD bounds.DubbingRegenerateResponse; added conversation guardrail filters, agent branch commit status, agent alerting and MCP requestMeta support. Language target creation no longer accepts modelId.run_subagent_* tool-result variants.update_segments methods and DubbingRegenerateResponse; added guardrail_types, custom_guardrail_names, include_commit_status and MCP request_meta support. Dubbing segment updates now use request body models, and language target creation no longer accepts model_id.parent_conversation_id, analysis charging, triggered guardrail metadata, branch merge conflicts, DTMF input redaction and Dubbing transcript uploads. Removed OpenAI realtime session types and run_subagent_* result models.ConversationStatus.ERROR.ConversationConfig.useMediaStream for routing conversation audio through the Android media stream. Remote normal WebSocket closures now report DisconnectionDetails.Agent, while locally initiated closures report DisconnectionDetails.User.PATCH /v1/dubbing/project/{project_id}/transcript/segments
DubbingBulkSegmentUpdateRequestDubbingBulkSourceSegmentUpdateResponse with the updated segments and revisionPATCH /v1/dubbing/project/{project_id}/language/{language_id}/transcript/segments
DubbingBulkTargetSegmentUpdateRequestDubbingBulkTargetSegmentUpdateResponse with the updated segments and revisionGET /v1/convai/conversations
parent_conversation_id (string)guardrail_types (GuardrailType[]) and custom_guardrail_names (string array)GET /v1/convai/agents/{agent_id}/branches
include_commit_status (boolean, default false)commits_ahead (integer), commits_behind (integer) and merged_into_branch_id (string)GET /v2/voices
gender, age and accent (string) filterslanguage and use_cases (string array) filtersmin_notice_period_days (integer), include_custom_rates, include_live_moderated and high_quality (boolean) filtersmax_duration_seconds (integer) and pronunciation_dictionary_locators (array)request_meta mapsalerting; language detection adds only_at_conversation_start (boolean)AnalysisCharging.last_run is now required and non-nullable; running totals add required runs (integer)content_format and document_type