Pipefy, recognized as one of the Market Shapers by Gartner®
Documentation, tips, and real examples to integrate and automate Pipefy through our API.
Recently active
Do you need help with your API queries and/or mutation?Here are a few that might help you!😉 🔎Queries📍 GET TABLE RECORDS WITH PAGINATION - TABLE ID{ table_records(first: 10, table_id: "XXXXXXX") { edges { cursor node { id title url } } pageInfo { endCursor hasNextPage hasPreviousPage startCursor } }}📍 GET TABLE RECORDS - TABLE RECORD ID{ table_record(id: XXX) { assignees { id name } created_at created_by { id name } due_date finished_at id labels { id name } parent_relations { name source_type } record_fields { array_value date_value datetime_value filled_at float_value name required updated_at value } summary { title value } table { id } title updated_at url }}📍 FIND TABLE RECORDS - FIELD ID | FIELD VALUE{ findRecords(tableId:"xxxx", first: 50,
Do you need help with your API queries and/or mutation?Here are a few that might help you!😉🔎Queries📍LIST PIPES{pipes(ids: [ID1, ID2]) { id name phases { name cards (first: x) { edges { node { id title } } } } }} 📍SHOW PIPE{ pipe(id: 123456) { id name start_form_fields { label id } labels { name id} phases { name fields { label id } cards(first: X) { edges { node { id title } } } } }} 📍SHOW ALL FIELDS FROM PIPE{ pipe(id: XXXXX) { start_form_fields { id internal_id label type options } phases { fields { label internal_id type options } } }}🛠Mutations📍CREATE PIPEmutation { createPipe( input: { organization_id: XXXX name: "XXXX" labels: [ {name: "Label 01", color: "#FF0042"} ] members: [ {user_id: 00000, role_name: "admin"} {user_id: 00001, role_name: "member"} ] phases: [ {name: "First Step"} {name: "Finished", done: true} ] start_form_fields: [ {typ
API queries to dense databases could potentially return millions, if not billions, of results. Pagination thus helps to limit the number of results. It’s a process used to divide a large dataset into smaller chunks (pages).⚠ Pipefy API endpoint supports pagination with a limit of 50 cards/records per pipe or 30 cards per phase.👉🏼Here are two examples of how to use pagination:🔹Example 1 > query allCards { allCards(pipeId: xxxx, first: 50) { pageInfo { hasNextPage endCursor } edges { node { id } } }}You will set the pageInfo attribute and it will return the "endcursor", with the endcursor you can see the other cards within that phase, putting it as an argument in the "after" command. And hasNextPage will show you if there are more pages. You can then use the ID returned by the endCursor to get to the next page: {allCards(pipeId:XXXXX, first:50, after:"WyIyLjI1IiwiMTg1LjAiLDI2ODc1OTNd"){pageInfo {hasNextPageendCursor}edges {node {id}}}}🔹E
Do you need help with your API queries and/or mutation?Here are a few that might help you!😉🔎Queries 📍LIST CARDS{ cards(pipe_id: XXXX, first: 10, search: {title: "XXXXX"}) { edges { node { id title assignees { id } comments { text } comments_count current_phase { name } done due_date fields { name value } labels { name } phases_history { phase { name } firstTimeIn lastTimeOut } url } } }}⚠This query has a limit of 50 cards/records per page, so it is necessary to use pagination, you can find this information here. 📍SHOW CARD{ card(id: XXXX) { title assignees { id } comments { text } comments_count current_phase { name } done due_date fields { name value } labels { name } phases_history { phase { name } firstTimeIn lastTimeOut } url }} 🛠Mutations 📍CREATE CARDmutation{ createCard( input: { pipe_id: XXXX fields_attributes: [ {field_id: "assignee", field_value:[00000, 00001]} {field_id: "checklist_vertical", field_value: ["a", "b"]} {field_id: "checklist_horizontal", field_value: ["b"
You can download the attached files in a pipe!😃 To get the links to the card attachments from a pipe via API, these are the queries you will need: ◾Attachments to cards on the pipe{ cards(pipe_id:XXX){ pageInfo{ hasNextPage endCursor } edges{ node{ id title attachments{ url } } } }}◾Card attachments{ card(id:XXXX) { attachments { createdAt path url } }}
First you need to have a report already defined, with the filters you want.Then you can run the following mutation:mutation {exportPipeReport(input: { pipeId: X, pipeReportId: X}) {pipeReportExport {id}}}The answer to this call will contain a numeric ID. Using this ID obtained in the previous call, you can execute the following query:{pipeReportExport(id: XX) {fileURLstatestartedAtrequestedBy {id}}}The result of this second call will generate a link, which you can copy and paste into your browser and the file will be generated!⚠Important: Requests are counted from the last request the client made before taking the request limit and not when the day ends.You have 24 hours to make a new request after receiving the daily request limit message, but not from 00:00 to 00:00 but from the last request the client made. In this case, if you made the last request before receiving the message, for example, at 9 a.m., you can only redo the request at 9 a.m. the next day.
Do you need help with your API queries and/or mutation?Here are a few that might help you!😉 🔎Queries 📍LIST COMMENTS FROM A CARD{ card(id:xxxxxxxx) { title comments { id author_name created_at text } }}🛠Mutations 📍CREATE COMMENTmutation {createComment(input: {card_id: XXXXXXXtext: "Life is like a box of chocolates.."}) {comment {idtext}}}📍UPDATE COMMENTmutation {updateComment(input: {id: XXXXXtext: "Let me explain something to you."}) {comment {idtext}}}📍DELETE COMMENTmutation {deleteComment(input:{id: XXXX}) {success}}
Do you need help with your API queries and/or mutation?Here are a few that might help you!😉 🛠Mutations📍CREATE LABELmutation { createLabel( input: { pipe_id: XXXX name: "Important!" color: "#FF0000" } ) { label { id name } }} 📍UPDATE LABELmutation { updateLabel( input: { id: XXXXX name: "Very Important!" color: "#FF6347" } ) { label { id name } }}📍DELETE LABELmutation { deleteLabel(input: { id: XXXX }) { success }}
Do you need help with your API queries and/or mutation?Here are a few that might help you!😉🔎Queries📍SHOW PHASE{ phase(id: XXX) { id name cards_count cards { edges { node { id title } } } fields { id } }}📍SHOW ALL PHASES FROM PIPE{pipe(id:XXXXX){phases{idnamecards_count}}}🛠Mutations📍CREATE PHASEmutation { createPhase( input: { pipe_id: XXXX name: "First Phase" done: false lateness_time: 172800 description: "XXXXXXXXXX" can_receive_card_directly_from_draft: true } ) { phase { id name } }}📍UPDATE PHASEmutation { updatePhase( input: { id: XXXXXXX name: "New name" done: true description: "New phase description" can_receive_card_directly_from_draft: false } ) { phase { id name } }}📍DELETE PHASEmutation { deletePhase( input: { id: XXXX }) { success }} 📍CREATE PHASE FIELDmutation { createPhaseField( input: { phase_id: XXXXX type: "radio_horizontal" label: "Did you finish the task?" options: ["Yes", "No"] description: "XXXX" required: true editable: false } ) { phase_field { id label }
Hi guys, I’ve looked up the documentation but couldn’t find anything specifying which fields are allowed at the AdvancedSearch option for the allCards query. Could you please list them here and/or append to the documentation? ThanksBernardo
Hello!Can somebody help me?I’m using MAKE and need to download a file from a card.Can somebody help me with an GraphQL command os some idea?Thank you!
Is it possible to create Field Conditionals via Pipefy API Query? I did my best following the documentation, and got to the query mutation { createFieldCondition( input: { name: "Mostra Endereço de Entrega para Produtos (show endereco_entrega)", phaseId: "340497504", actions: [ { actionId: "show", phaseFieldId: "endere_o_de_entrega", whenEvaluator: true } ], condition: { expressions_structure: [0], expressions: [ { field_address: "tipo_de_compra", operation: "equals", value: "Produtos", structure_id: 0 } ] } } ) { fieldCondition { id name } clientMutationId }}Which yields me { "data": { "createFieldCondition": null }, "errors": [ { "message": "Validation failed: Actions field não pode ficar em branco", "locations": [ { "line": 2, "column": 3 } ],
I’m sending the task e-mail via integration with make, i want to send the task e-mail and the notification to pop up on the “tasks & requests” interface, is there any way to do this?i already did the mutation to get the publicphaseform:configurePublicPhaseFormLink(input: {cardId: XXXX, enable: true}) {url}But it does not make a notification of task pending on the “tasks & requests” interface :c
To update the status of a record via API, just follow the steps below.👉🏼First you need to know the Status ID. The following query will give you this information:{ table(id: "XXXXXXXXXX") { statuses { name id } }} 👉🏼Next, you will use the Status ID obtained to update the field of a record by executing the following mutation:mutation { updateTableRecord(input: {statusId: XXXXX, id: XXXXXXXX}) { table_record { title status { name } } }}⚠To find out the record's ID, simply access the database and when you open the record identify the final number that appears in the browser's address bar. Or via API by running the query below:{ table_records(table_id: "XXXXXXXXX") { edges { cursor node { id title } } pageInfo { endCursor hasNextPage hasPreviousPage startCursor } }}
Hi there,In the documentation of Webhooks Filters is mentioned that you can filter by field ID, but it is waitng an array of integers. As far as I know, I have used ids like (id) “field_2_string” when reading fields and “this_type_of_id” (index_name) for writing. There is also the uuid. But how can I get a numeric ID for fields that can be used in filters?It says:mutation { createWebhook(input: { actions: ["card.field_update"], name: "Field Update Webhook", pipe_id: 123456, url: "https://your-endpoint.com/", filters: { field_id: [ 123, 345 ] } }) { webhook { id actions url } } } I try using the following mutation:mutation { createWebhook( input: { actions: ["card.field_update"], filters: { field_id: [ "field_37_string" ] }, name: "card.field_update", url: "myserver.app", email: "myemail@gobusinessinc.com", pipe_id: 1234 } ) { webhook { id actions ur
Hello,I am building a custom dashboard to display the latest emails from the pipe. I understand there is an API endpoint called inbox_email, but I do not see many parameters available for configuration. Therefore, I believe I need to integrate the inbox_email endpoint with other API endpoints to retrieve the information I need.If, for example, a card has 50 emails and I use the inbox_email endpoint, will it display all 50 emails, or is there a way to limit the results to only the most recent ones? If it retrieves all 50 emails, does that mean it will consume 50 API calls or just one? Our system is not very busy, so it is not necessary to create a cron job to pull these records at regular intervals. Is there a way to configure the API, perhaps using webhooks, so that the API is only triggered when a new email arrives?The dashboard should display the latest emails, ideally those received within the past 24 hours. Any ideas or guidance would be appreciated.
ERRO TO SEND API UPDATE ON POWER AUTOMATE.ERROR: errors.0.messageUnexpected end of document
I need to connect a SharePoint spreadsheet to Pipefy via Workato. I have already created the connections, but when creating the SharePoint Recipe I cannot find the Excel file via URL. Has anyone made this connection?
When I query the API for database records, how can I tell if a record is connected to a parent card?From what I can tell, the ‘Parent Connection’ property only shows if a connection exists, not whether any specific record is actually connected to a card.If this is not possible, is there a way to do this from the other end - use the API to see if a card has any child records connected?Thank you.
Hello everyone. I am trying to obtain all the cards from a pipe using the following query/code: pagina = true while pagina == True: # Define quais informações serão extraídas dos cards do pipe query = """ { allCards(pipeId: %s, first: 50, after: "%s") { pageInfo { hasNextPage endCursor } edges { node { id current_phase { name } done fields { name value } } cursor } } } """ % (pipe_id, endCursor if endCursor else "") response = requests.post(pipefy_url, json={'query': query},
Hi everyone! I am currently using python to move a card to a certain phase in my pipe, using the following code: payload = { "query": f""" mutation {{ moveCardToPhase (input: {{ card_id: "1085486680", destination_phase_id: "329687449" }}) {{ card {{ id current_phase {{ name }} }} }} }} """ } response = requests.request("POST", pipefy_url, json=payload, headers=pipefy_headers) print(response.text) However, right now response.text gives me the following error: {"data":{"moveCardToPhase":null},"er
Can someone tell me, categorically, which identifier(s) are immutable for each Pipefy Object;Pipe Phase Card FieldWhen discussing “Fields”, my understanding is that “field_id” or “id” is reliably immutable. However, there are other identifiers “internal_id”, “index” and “uuid” each of which would suggest they too could be immutable.Thanks for any helpMark
In a scenario where a Card in "Pipe A" is connected to a Card in "Pipe B" (ie Pipe A has the connect field), is there an API query which, for a Card on Pipe B, will give all of the Cards which are connected to that Pipe B Card? Thanks for any help
I’m trying to figure out whether it’s possible to formulate a GraphQL query to retrieve more than 50 itemsHere’s a sample query which is returning a page of 50 items, when in fact I want all cards query MyQuery { cards(pipe_id: "305537187") { nodes { id current_phase { name } fields { value native_value field { id label internal_id index_name index } } } }}
Hey guys, I’m trying to use the following query to get all cards by paginating my info with the following line of code but I’m getting a Response 400 as a response, if I remove the “after: endCursor” part it works perfect for my first 50 cards - any suggestions? payload = "{\"query\":\"{ allCards(pipeId: 304500848, after: \"WyI4LjAiLCIzMzEuMCIsMTAxMTE3MjI1N10\") { edges { node { id title fields { name report_value updated_at value } } } pageInfo { endCursor } } }\"}"
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.