Pipefy, recognized as one of the Market Shapers by Gartner®
Build, extend, and integrate with Pipefy. Connect with other developers and explore what's possible.
Recently active
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 } }}
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
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 }
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 }}
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.
Welcome to the Pipefy Developers ! Here you can find documentation on how to develop your own Pipefy App and on how to use GraphQL API query language to extend Pipefy capabilities.Pipefy is a process platform designed to standardize and advance business workflow processes. Users can create custom workflows, generate reports to find process bottlenecks, centralize communications, and improve overall productivity by using Pipefy.The Pipefy Developers is an open space where developers can build powerful products on Pipefy’s platform. Create game-changing process advancements for your team or for managers in +15k companies around the world.What you can do on the Pipefy Developers:
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}}
The GraphQL data query language is: A specification. The spec determines the validity of the schema on the API server. The schema determines the validity of client calls. Strongly typed. The schema defines an API's type system and all object relationships. Introspective. A client can query the schema for details about the schema. Hierarchical. The shape of a GraphQL call mirrors the shape of the JSON data it returns. Nested fields let you query for and receive only the data you specify in a single round trip. An application layer. GraphQL is not a storage model or a database query language. The graph refers to graph structures defined in the schema, where nodes define objects and edges define relationships between objects. The API traverses and returns application data based on the schema definitions, independent of how the data is stored. It allows for reading and writing through queries and mutations (see GraphQL documentation). 📌Authentication For authentication against Pip
English Hello, I am trying to connect Pipefy and PBI, with the power Query and a GraphQL API, but i cant find the right URL to put in. It keep me returning the error 400 or 404.May someone help me? Português Olá,Estou tentando conectar o Pipefy e o PowerBI através do Power Query e uma API de GraphQL, porém as URLs sempre dão erro 404 ou 400.Alguém sabe me ajudar?
Hello guys, EnglishI’m trying to connect a whatsapp chatbot to pipefy through API. Problem is chatbot uses JSON API to make calls. How can I convert GraphQL to Json ?PT-BR Estou tentando integrar um chatbot de whatsapp para fazer a criação de cards no pipefy através da API. Porém na configuração do step no chatbot ele só aceita código JSON. Como faço para converter a query de GraphQL para o código JSON? mutation{ createCard(input:{ pipe_id:XXXXXXX, phase_id:XXXXXXX, fields_attributes: [ {field_id:"sua_empresa", field_value:"Teste"}, {field_id:"seu_nome", field_value:"test"} ]}) {card {id}} }
Hello Doers! We have some exciting news to share with you! Later this year we’ll officially launch a new way to integrate Pipefy with other tools. This will empower our users to ensure the transmission of information between different parties is automatic and error-proof and be confident that the entire operation is visible and controlled in a single place. I’m talking about things like: Updating employee personal information, posting job openings to job boards and collecting signatures Optimizing reconciliation, synchronizing purchase information, controlling cash flow and updating balance sheets Managing NPS, churn requests, updating directories, customer documents and support tickets’ statuses Sending automatic SMS texts to requesters and stakeholders The sky is the limit. And the great news is: new customers will only get access to Custom Integrations depending on their contract. But we are making this add-on available to all of our current customer base as a way to thank
I’m trying to get data from a pipe using Google Apps Script and keep getting the error:Info {"errors":[{"message":"Unexpected end of document","locations":[]}]}I don’t think the problem is with the general script’s structure, since it works when I run another query.Also, I’m new to GRAPHQL - this is the first time I use it, for instance - so that’s another reason why I believe the problem might be in the query.A piece of the script I used to try is: const query = `{ allCards(pipe_id:${pipe_id}){ edges{ node { title current_phase { name } createdBy { name } createdAt fields { value name } } } }`; const graphql = JSON.stringify({ query: query, variables: null, }); const params = { method: "GET", payload: graphql, headers: { "Content-Type": "application/json", Authorization: `Bearer ${TOKEN}`, }, }; var response = UrlFetchApp.fetch(url, params);pi
Hello, Pipefy Community, We have great news: now, you can integrate Pipefy with your reports tool, such as PowerBI or DataStudio, through API! Here’s how: With Reports, you can filter data from your processes in real time, organize them into columns and export them as a spreadsheet to analyze the information you want. If your team needs to export reports frequently and within a certain period of time, you can automate that process! Configure an API Scheduler routine to automate report extraction using a mutation. The report will be exported in the time period you set in your scheduler. To extract the report, two calls are needed, the first is a mutation that will obtain an ID in the response to be used in the extraction, and the second is a query, which will use the response obtained in the first to obtain the download URL of the report. The initial call, as follows, must inform the ID of the Pipe where the report is saved and the ID of the report already formatted with all the columns
I can imagine that there are certain limits to the GraphQL API. For example: - number of subsequent queries allowed per time unit - number of webhooks allowed - size of inputs/outputs - size of attachment files What are the numerical values of these (and possibly more) limits?
I see that “clientMutationId” is always needed as part of the GraphQL payload. But What is this for??In the result from GraphQL always come back as NULL. In the Dev Docs says “A unique identifier for the client performing the mutation.” Can I register a Client for the miutation? Thanks!
We released a new API mutation called updateFieldsValues that will allow users to update up to 30 fields in a single API call. This new mutation will improve the overall developer experience when handling batch updates and will significantly improve the speed of batch updates, by reducing the number of API calls. 📌 Incremental updatesThis new API mutation also allows developers to update fields that contain multiple data by just adding a new value or removing an existing value.For example, to add a label to a label field, previously developers would need to do two API calls, an API call to get all existing labels, use this list to append the new label and then send to Pipefy in another API call the new list of all the labels. With the new mutation updateFieldsValues, developers can send an API mutation telling Pipefy to only add a new label to the existing list of labels in a field, the same applies to assignees, connections and checklists fields. Sample GraphQL mutationUpdating two
Hello,I'm trying to send a file to a card. Executing createPresignedUrl and PUT for S3 works perfectly, I can even access the download of the file that was sent.My problem is with the updateFieldsValues mutation. When I send it I get an error, can you help me with that? My mutation:mutation { updateFieldsValues( input: { nodeId: CARD-ID, values: { fieldId: "foto_do_cnpj_cpf", value: ["uploads/7c3b7885-16d5-44c0-9e23-8570f261b20a/1633126573430.png"], operation: ADD } } ) { clientMutationId, updatedNode }} The returned error: { "data": { "updateFieldsValues": null }, "errors": [ { "message": "Invalid input: foto_do_cnpj_cpf ([\"uploads/7c3b7885-16d5-44c0-9e23-8570f261b20a/1633126573430.png\"])", "locations": [ { "line": 3, "column": 7 } ], "path": [ "updateFieldsValues" ], "code": 30000, "type": "PipefyRuntimeError" } ]} Do you know what it can be? I'
Hello! Is it possible add attachments to specific Card using Graphql?I can update Card… add comments.. but I could not add attachments.. :(If possible, could you give an example… Thanks...
[EN]Hi, we’d like to know if there is a way to export data from cards, on a specific phase of a process, in formats other than XLS. More specifically in CSV or XML.Thank you in advance. [PTBR]Olá, gostaríamos de saber se existe uma maneiro de exportar dados de cards, em uma fase específica de um processo, em outros formatos além de XLS. Mais especificamente em CSV ou XML?Desde já, Obrigado
We are happy to announce that now we support filtering and query card by the updated_at field inside the allCards query. This new feature will avoid the need to look through all cards to find the last updated ones for example.Sample query:Changelogadded: updated_at filter inside allCards root query
Hi!I'm trying to get all records from a table, but using table_records isn't giving me all of them.Running the following code in Python I get 50 records, but my table has 94. Any ideas of how I can get all of them?import requestsimport jsonpayload = {"query": "{ table_records(table_id:\"TABLE_ID\") {edges {node {id }}}}"}headers = { "authorization": f"Bearer {pipefy_token}", "content-type": "application/json"}response = requests.request("POST", url, json=payload, headers=headers)json_data = json.loads(response.text)print(len(json_data["data"]["table_records"]["edges"]))
Hey everyone! Pipefy GraphQL API Reference documentation https://api-docs.pipefy.com is now updated!In this new version we fixed some broken links and also all latest mutations, queries or any other changes in our GraphQL API are now available. This is way of improving even more Pipefy integrations capabilities and deliver better documentation to our customers and developers community.But it's important to remember that our official documentation page is https://developers.pipefy.comThis is the home page where developers can have access to other documentation features like code examples, articles about GraphQL and many more.When it’s necessary a more in depth documentation, then the GraphQL API Reference is the place for it! It's a reference containing all possibilities to work with the Pipefy API explaining the concepts of Card, Pipe, Table, etc. and also available fields, required fields and their data types.We hope you like it and feel free to give us feedbacks and ideas.
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.