## Get Rows `campaigns.get_rows(strid, CampaignGetRowsParams**kwargs) -> CampaignGetRowsResponse` **get** `/campaigns/{id}/rows` Retrieve a paginated list of rows (contacts) for a given campaign. Supports filtering by text query, call statuses, and call result. ### Parameters - `id: str` - `page: float` - `page_size: float` - `query: Optional[str]` - `result: Optional[Literal["IVR", "voicemail", "human", 4 more]]` - `"IVR"` - `"voicemail"` - `"human"` - `"unknown"` - `"ios-screening-filter"` - `"all"` - `"none"` - `statuses: Optional[str]` ### Returns - `class CampaignGetRowsResponse: …` - `page: float` - `page_size: float` - `rows: List[Row]` - `id: str` - `input_data: Dict[str, str]` - `phone_number: str` - `row_index: float` - `call: Optional[RowCall]` This represent a call "order" that was requested by the user. A call order can be resolved over multiple call attempts spanning up to a few days. - `id: str` The ID of the call. - `assistant: Optional[RowCallAssistant]` - `id: str` - `background_sound: Optional[Literal["audio/office.ogg"]]` The background sound to play during the call. Useful to give the impression that your AI agent is in an office. - `"audio/office.ogg"` - `calendly: Optional[RowCallAssistantCalendly]` - `connection_id: str` The connection ID representing the link between your Calendly account and Revox. - `event_type_id: str` The event type ID representing the event type to schedule. (eg: https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5) - `call_retry_config: Optional[RowCallAssistantCallRetryConfig]` Configuration for call retry behavior including time windows, delays, and max iterations. If not provided, defaults will be used. - `calling_windows: List[RowCallAssistantCallRetryConfigCallingWindow]` - `calling_window_end_time: str` End time for the calling window in the recipient's timezone (or timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour). Examples: '17:00', '6pm'. Default: '18:00'. - `calling_window_start_time: str` Start time for the calling window in the recipient's timezone (or timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour). Examples: '09:00', '10am'. Default: '10:00'. - `retry_delay_seconds: int` Delay between retry attempts in seconds. Default: 7200 (2 hours). - `max_retry_attempts: int` Maximum number of call retry attempts. Default: 3. - `timezone: Optional[str]` Optional IANA timezone identifier to override the automatic timezone detection from phone number. If not provided, timezone is determined from the recipient's phone number country code. Examples: 'America/New_York', 'Europe/Paris'. - `created_at: object` - `end_of_call_sentence: Optional[str]` - `first_sentence: Optional[str]` - `first_sentence_delay_ms: int` Delay in milliseconds before speaking the first sentence. Default: 400. - `first_sentence_mode: Literal["generated", "static", "none"]` - `"generated"` - `"static"` - `"none"` - `ivr_navigation_enabled: bool` Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and skip turns to navigate phone menus. - `llm_model: RowCallAssistantLlmModel` - `class RowCallAssistantLlmModelUnionMember0: …` - `name: Literal["gpt-4.1", "ministral-3-8b-instruct"]` - `"gpt-4.1"` - `"ministral-3-8b-instruct"` - `type: Literal["dedicated-instance"]` - `"dedicated-instance"` - `class RowCallAssistantLlmModelUnionMember1: …` - `openrouter_model_id: str` The model ID to use from OpenRouter. eg: openai/gpt-4.1 - `openrouter_provider: str` The provider to use from OpenRouter. eg: nebius, openai, azure, etc. - `type: Literal["openrouter"]` Use a model from OpenRouter. - `"openrouter"` - `max_call_duration_secs: float` The maximum duration of the call in seconds. This is the maximum time the call will be allowed to run. - `name: str` - `organization_id: str` - `prompt: str` - `structured_output_config: Optional[List[RowCallAssistantStructuredOutputConfig]]` The structured output config to use for the call. This is used to extract the data from the call (like email, name, company name, etc.). - `name: str` - `required: bool` - `type: Literal["string", "number", "boolean", 3 more]` - `"string"` - `"number"` - `"boolean"` - `"enum"` - `"date"` - `"datetime"` - `description: Optional[str]` - `enum_options: Optional[List[str]]` - `transfer_phone_number: Optional[str]` Phone number to transfer calls to when users request to speak to a human agent. - `updated_at: object` - `voice: Optional[RowCallAssistantVoice]` - `id: str` The ID of the voice. - `provider: Literal["cartesia", "elevenlabs"]` The provider of the voice. - `"cartesia"` - `"elevenlabs"` - `speed: Optional[float]` The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs 0.7–1.2. Default is 1.0. - `voicemail_message: Optional[str]` If set, when voicemail is detected the agent will speak this message then hang up; if null, hang up immediately. - `webhook_url: Optional[str]` The webhook URL to call when the call is completed. - `faq_items: Optional[List[RowCallAssistantFaqItem]]` - `answer: str` - `question: str` - `id: Optional[str]` - `needs_human_answer: Optional[bool]` - `source: Optional[Literal["human", "ai"]]` - `"human"` - `"ai"` - `pending_faq_count: Optional[float]` - `call_attempts: List[RowCallCallAttempt]` All call attempts for this call order, ordered by most recent first. - `id: str` The ID of the call attempt. - `answered_at: object` The time the call was answered. - `dial_error: Optional[Literal["number_non_attributed", "too_many_calls", "busy", 5 more]]` The SIP error that occurred. - `"number_non_attributed"` - `"too_many_calls"` - `"busy"` - `"temporarily_unavailable"` - `"no_answer"` - `"no_international_permission"` - `"precondition_failed"` - `"non_classified_error"` - `ended_at: object` The time the call ended. - `phone_number: str` The phone number that was called. Formatted in E.164 format. Example: +1234567890 - `recording_url: Optional[str]` The URL of the audio recording of the call. - `result: Optional[Literal["IVR", "voicemail", "human", 2 more]]` - `"IVR"` - `"voicemail"` - `"human"` - `"unknown"` - `"ios-screening-filter"` - `started_at: object` The time the call started. - `status: Literal["queued", "ringing", "ongoing", 2 more]` The status of the call attempt. - `"queued"` - `"ringing"` - `"ongoing"` - `"completed"` - `"error"` - `end_reason: Optional[str]` Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voicemail', 'transfer', 'ivr_no_navigate'. - `ended_by: Optional[Literal["agent", "user", "system"]]` Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'system' (e.g. max duration limit). - `"agent"` - `"user"` - `"system"` - `structured_output: Optional[Dict[str, object]]` The data extracted from the call, using the structured output config from the parent call object. - `transcript: Optional[List[RowCallCallAttemptTranscript]]` The transcript of the call. - `content: str` - `role: Literal["user", "assistant", "tool"]` - `"user"` - `"assistant"` - `"tool"` - `tool_arguments: Optional[Union[Dict[str, object], str, null]]` - `Dict[str, object]` - `str` - `tool_is_error: Optional[bool]` - `tool_name: Optional[str]` - `call_retry_config: Optional[RowCallCallRetryConfig]` Configuration for call retry behavior including time windows, delays, and max iterations. If not provided, defaults will be used. - `calling_windows: List[RowCallCallRetryConfigCallingWindow]` - `calling_window_end_time: str` End time for the calling window in the recipient's timezone (or timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour). Examples: '17:00', '6pm'. Default: '18:00'. - `calling_window_start_time: str` Start time for the calling window in the recipient's timezone (or timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour). Examples: '09:00', '10am'. Default: '10:00'. - `retry_delay_seconds: int` Delay between retry attempts in seconds. Default: 7200 (2 hours). - `max_retry_attempts: int` Maximum number of call retry attempts. Default: 3. - `timezone: Optional[str]` Optional IANA timezone identifier to override the automatic timezone detection from phone number. If not provided, timezone is determined from the recipient's phone number country code. Examples: 'America/New_York', 'Europe/Paris'. - `calls_count: float` The number of call attempts made. - `campaign: Optional[RowCallCampaign]` - `id: str` - `name: str` - `created_at: object` The time the call order was created. - `direction: Literal["inbound", "outbound"]` Whether the call is inbound or outbound. - `"inbound"` - `"outbound"` - `first_sentence_delay_ms: int` Delay in milliseconds before speaking the first sentence. Default: 400. - `from_phone_number: str` The phone number that made the call. Formatted in E.164 format. Example: +1234567890 - `is_cancelled: bool` DEPRECATED: Whether the call has been cancelled. This is derived from `status`. Use `status` instead. - `is_completed: bool` DEPRECATED: Whether the call has completed. This is derived from `status`. Use `status` instead. - `last_call_attempt: Optional[RowCallLastCallAttempt]` This represent a single call attempt. A call attempt is a single call made to the phone number. - `id: str` The ID of the call attempt. - `answered_at: object` The time the call was answered. - `dial_error: Optional[Literal["number_non_attributed", "too_many_calls", "busy", 5 more]]` The SIP error that occurred. - `"number_non_attributed"` - `"too_many_calls"` - `"busy"` - `"temporarily_unavailable"` - `"no_answer"` - `"no_international_permission"` - `"precondition_failed"` - `"non_classified_error"` - `ended_at: object` The time the call ended. - `phone_number: str` The phone number that was called. Formatted in E.164 format. Example: +1234567890 - `recording_url: Optional[str]` The URL of the audio recording of the call. - `result: Optional[Literal["IVR", "voicemail", "human", 2 more]]` - `"IVR"` - `"voicemail"` - `"human"` - `"unknown"` - `"ios-screening-filter"` - `started_at: object` The time the call started. - `status: Literal["queued", "ringing", "ongoing", 2 more]` The status of the call attempt. - `"queued"` - `"ringing"` - `"ongoing"` - `"completed"` - `"error"` - `end_reason: Optional[str]` Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voicemail', 'transfer', 'ivr_no_navigate'. - `ended_by: Optional[Literal["agent", "user", "system"]]` Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'system' (e.g. max duration limit). - `"agent"` - `"user"` - `"system"` - `structured_output: Optional[Dict[str, object]]` The data extracted from the call, using the structured output config from the parent call object. - `transcript: Optional[List[RowCallLastCallAttemptTranscript]]` The transcript of the call. - `content: str` - `role: Literal["user", "assistant", "tool"]` - `"user"` - `"assistant"` - `"tool"` - `tool_arguments: Optional[Union[Dict[str, object], str, null]]` - `Dict[str, object]` - `str` - `tool_is_error: Optional[bool]` - `tool_name: Optional[str]` - `llm_model: RowCallLlmModel` - `class RowCallLlmModelUnionMember0: …` - `name: Literal["gpt-4.1", "ministral-3-8b-instruct"]` - `"gpt-4.1"` - `"ministral-3-8b-instruct"` - `type: Literal["dedicated-instance"]` - `"dedicated-instance"` - `class RowCallLlmModelUnionMember1: …` - `openrouter_model_id: str` The model ID to use from OpenRouter. eg: openai/gpt-4.1 - `openrouter_provider: str` The provider to use from OpenRouter. eg: nebius, openai, azure, etc. - `type: Literal["openrouter"]` Use a model from OpenRouter. - `"openrouter"` - `metadata: Optional[Dict[str, str]]` Metadata stored with the call. - `organization_id: str` The ID of the organization that owns the call. - `scheduled_at: object` The time the call order is scheduled to start. - `status: Literal["initializing", "queued_for_calling", "calling", 4 more]` The status of the call. - `"initializing"` - `"queued_for_calling"` - `"calling"` - `"scheduled"` - `"completed"` - `"cancelled"` - `"errored"` - `to_phone_number: str` The phone number that received the call. Formatted in E.164 format. Example: +1234567890 - `total: float` ### Example ```python import os from revox import Revox client = Revox( api_key=os.environ.get("REVOX_API_KEY"), # This is the default and can be omitted ) response = client.campaigns.get_rows( id="id", page=0, page_size=0, ) print(response.page) ```